PHP: удалить `http: //` из названия ссылки

У меня есть строка, которая выглядит так:

$string = '<a href="http://google.com">http://google.com</a>';

Как удалить часть http:// из текста ссылки, но оставить ее в атрибуте href?

Без использования полноразмерного парсера это может сделать трюк для большинства ситуаций …

 $str = '<a href="http://google.com">http://google.com</a>'; $regex = '/(?<!href=["\'])http:\/\//'; $str = preg_replace($regex, '', $str); var_dump($str); // string(42) "<a href="http://google.com">google.com</a>" 

Он использует отрицательный lookbehind, чтобы убедиться, что перед ним нет href=" или href=' .

Посмотрите на IDEone .

Он также учитывает людей, которые делят свои значения атрибутов на ' .

 $string = '<a href="http://google.com">http://google.com</a>'; $var = str_replace('>http://','>',$string); 

Просто попробовал это на IDEone.com, и он имеет желаемый эффект.

В этом простом случае функция preg_replace , вероятно, будет работать. Для большей стабильности попробуйте использовать DOMDocument :

 $string = '<a href="http://google.com">http://google.com</a>'; $dom = new DOMDocument; $dom->loadXML($string); $link = $dom->firstChild; $link->nodeValue = str_replace('http://', '', $link->nodeValue); $string = $dom->saveXML($link); 

Любое простое выражение или код замены строки, вероятно, сбой в общем случае. Единственный «правильный» способ сделать это – фактически разобрать кусок как фрагмент SGML / XML и удалить значение http:// из значения.

Для любого другого (достаточно короткого) кода манипуляции с строкой поиск встречного примера, который его разрывает, будет довольно простым.

Предполагая, что «http: //» всегда появляется дважды в строке $ string, найдите строку для «http: //» назад с помощью strripos. Если поиск будет успешным, вы узнаете start_index из «http: //», который хотите удалить (и знаете, конечно). Теперь вы можете использовать substr для извлечения всего, что происходит до и после фрагмента, который вы хотите удалить.

 $str = 'http://www.google.com'; $str = preg_replace('#^https?://#', '', $str); echo $str; // www.google.com 

который будет работать как для http: //, так и для https: //

текущий код

 $string = '<a href="http://google.com">http://google.com</a>'; $var = explode('http://',$string); echo $var[2];