Не распознается url с русскими буквами? [требует правки]

223
14 сентября 2017, 18:17
public function alphanum($value,$field)
    {
        $value = strip_tags($value);
        $field = strip_tags($field);
        $valid = preg_match('/^[\pL\pN]+$/u', $value);
        $slug = toAscii($value);
        if(!$valid or empty($slug) or strlen($value) != strlen($slug))
        {
            $this->errorBag[] = array('field' => $field,'error' => $this->getError('alphanum',array($field)));
        }
    }
public function url($value,$field)
    {
        $value = strip_tags($value);
        $field = strip_tags($field);
        if(!filter_var($value, FILTER_VALIDATE_URL));
        {
            $this->errorBag[] = array('field' => $field,'error' => $this->getError('url',array($field)));
        }
    }
public function getLink($param = array())
    {
        if (empty($param)) return app()->url($this->pattern);
        $pattern = $this->pattern;
        foreach($param as $id => $value) {
            $pattern = str_replace("{".$id."}", $value, $pattern);
        }
        return app()->url($pattern);
    }
}
function str_limit($text, $length, $ad = '...') {
    /**
     * @var $ending
     * @var $exact
     * @var $html
     */
    $ad = is_string($ad) ? array('ending' => $ad) : $ad;
    $default = array('ending' => '...', 'exact' => true, 'html' => false);
    $options = array_merge($default, $ad);
    extract($options);
    if ($html) {
        if (mb_strlen(preg_replace('/<.*?>/', '', $text)) <= $length) {
            return $text;
        }
        $totalLength = mb_strlen(strip_tags($ending));
        $openTags = array();
        $truncate = '';
        preg_match_all('/(<\/?([\w+]+)[^>]*>)?([^<>]*)/', $text, $tags, PREG_SET_ORDER);
        foreach ($tags as $tag) {
            if (!preg_match('/img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param/s', $tag[2])) {
                if (preg_match('/<[\w]+[^>]*>/s', $tag[0])) {
                    array_unshift($openTags, $tag[2]);
                } else if (preg_match('/<\/([\w]+)[^>]*>/s', $tag[0], $closeTag)) {
                    $pos = array_search($closeTag[1], $openTags);
                    if ($pos !== false) {
                        array_splice($openTags, $pos, 1);
                    }
                }
            }
            $truncate .= $tag[1];
            $contentLength = mb_strlen(preg_replace('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', ' ', $tag[3]));
            if ($contentLength + $totalLength > $length) {
                $left = $length - $totalLength;
                $entitiesLength = 0;
                if (preg_match_all('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', $tag[3], $entities, PREG_OFFSET_CAPTURE)) {
                    foreach ($entities[0] as $entity) {
                        if ($entity[1] + 1 - $entitiesLength <= $left) {
                            $left--;
                            $entitiesLength += mb_strlen($entity[0]);
                        } else {
                            break;
                        }
                    }
                }
                $truncate .= mb_substr($tag[3], 0 , $left + $entitiesLength);
                break;
            } else {
                $truncate .= $tag[3];
                $totalLength += $contentLength;
            }
            if ($totalLength >= $length) {
                break;
            }
        }
    } else {
        if (mb_strlen($text) <= $length) {
            return $text;
        } else {
            $truncate = mb_substr($text, 0, $length - mb_strlen($ending));
        }
    }
    if (!$exact) {
        $spacepos = mb_strrpos($truncate, ' ');
        if (isset($spacepos)) {
            if ($html) {
                $bits = mb_substr($truncate, $spacepos);
                preg_match_all('/<\/([a-z]+)>/', $bits, $droppedTags, PREG_SET_ORDER);
                if (!empty($droppedTags)) {
                    foreach ($droppedTags as $closingTag) {
                        if (!in_array($closingTag[1], $openTags)) {
                            array_unshift($openTags, $closingTag[1]);
                        }
                    }
                }
            }
            $truncate = mb_substr($truncate, 0, $spacepos);
        }
    }
    $truncate .= $ending;
    if ($html) {
        foreach ($openTags as $tag) {
            $truncate .= '</'.$tag.'>';
        }
    }
    return $truncate;
}
READ ALSO
Работа с заполнителями в стоке PHP

Работа с заполнителями в стоке PHP

В MySQL в поле храниться шаблон html-страницы:

176
Не видит view index.php yii2

Не видит view index.php yii2

[img]http://s011radikal

186
opencart где можно найти код, который указывает на имя клиента?

opencart где можно найти код, который указывает на имя клиента?

Добрый день, возникла необходимость при оформлении заказа или регистрацииВ письме было указано имя клиента

206
Как отправить cUrl запрос и получить ответ?

Как отправить cUrl запрос и получить ответ?

ЗдравствуйтеМне нужно отправить GET на https://api

206