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

213
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-страницы:

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

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

[img]http://s011radikal

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

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

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

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

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

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

199