Граница слова preg_replace

212
28 октября 2017, 17:57

Не понимаю, почему находит простое слово, если я указал границу?

$str = 'http://site.ru, http://site.com, https://site.info sgdf';
echo preg_replace('#\b(https?://)([a-z0-9-]+)\.([a-z]{2,})\b#', '<a href="$1$2.$3">$2.$3</a>', $str);

Должно вывести site.ru, site.com, site.info

а выводит site.ru, site.com, site.info sgdf

Answer 1

https://ideone.com/Iavmu4 - всё выводится верно:

<a href="http://site.ru">site.ru</a>, <a href="http://site.com">site.com</a>, <a href="https://site.info">site.info</a> sgdf

Вероятно ты не учёл, что замена - это именно замена совпадений, соответственно, всё что не совпало, остаётся на своих метах. Так порисходит с запятыми, пробелами и sgdf.

READ ALSO
Как применить двойную сортировку?

Как применить двойную сортировку?

Имею проблему с сортировкой в таблицеЕсть стандартное строение листа(таблицы):

221
Вопрос по работе с свойствами класса

Вопрос по работе с свойствами класса

Здравствуйте, хочу реализовать одну вещь, суть ее в следующем: Есть класс А, в нем метод method и свойство atribute и файл, например indexphp

211
Почему JIRA REST API не пускает LDAP пользователей?

Почему JIRA REST API не пускает LDAP пользователей?

Через JIRA REST API создаю инциденты с корпоративного сайтаС логином админа и агентов все работает, а с остальными пользователями (тянутся из LDAP) проблема

228
Вставка символов юникода в строку

Вставка символов юникода в строку

ЗдравствуйтеСайт работает в кодировке Windows-1251, в том числе и соединение с базой MySQL

205