Строчный текст кроме URL - PullRequest
0 голосов
/ 06 июля 2011

У меня есть страница с именем «load.php», которая вызывается вверху каждой страницы.Он имеет несколько различных функций preg_replace () и функцию strtolower (), которая влияет на переменную $ text1 в конце страницы.(Эти изменения выполняются при загрузке страницы, а не при вставке в БД). Я хочу добавить последнюю функцию до или после strtolower (), чтобы исключить атрибут href URL-адресов из strtolower ().Как я могу справиться с этим?Спасибо.

Ответы [ 2 ]

0 голосов
/ 09 января 2015

Вот вам укороченная версия:

function strtolowerExceptLinks($text) {
        $search = '(\b[a-zA-Z0-9]+://[^( |\>\n)]+\b)';
        preg_match_all($search, $text, $matches);
        $urls = array_unique($matches[0]);
        $text = mb_strtolower($text);
        if (is_array($urls)) {
            foreach ($urls as $url) {
                $text = str_replace(mb_strtolower($url), $url, $text);
            }
        }
        return $text;
    }
0 голосов
/ 09 июля 2011

Позвольте мне попробовать:

//search for links with href
$links = preg_match_all('/href="(?P<link>[^"]*?)"/i',$text1, $matches);
if(count($matches['link'])>0){
    // explode non links pieces of code
    $blocks = preg_split('/href="(?P<link>[^"]*?)"/i',$text1);
    // for assurance
    // non-links pieces should be equal a links plus one
    if(count($matches['link']) == (count($blocks)-1))
    {
        // to lower non-link pieces
        $blocks = array_map("strtolower", $blocks);
        $size = count($matches['link']);
        for($i=0;$i<$size;$i++){
            //putting together the link again without change a case
            $blocks[$i] .= 'href="'.$matches['link'][$i].'"';
        }
        $text1 = join("",$blocks);
    }
} else {
    $text1 = strtolower($text1);
}

Удачи:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...