Граница слова preg_replace
Не понимаю, почему находит простое слово, если я указал границу?
$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 |
Не находит - оставляет без изменений.
|
Цитата:
var str='http://site.ru, [url]http://site.com[/url], [url]https://site.info[/url] sgdf, https://test.ru'; alert(str.match(/(https?:\/\/)(.+?)\.(.+?)(?=\s|,|$)/g)); |
ksa,
это же сервер и он прекрасно справится, в отличии от JS в этом плане у него куда большие возможности. ) Просто в данном случае граница слова совсем не требуется. $str = 'http://site.ru, http://site.com, https://site.info sgdf'; echo preg_replace('~(https?://)([^\s,]+)~', '<a href="$1$2">$2</a>', $str); |
Я понял, спасибо.
|
Я сделал, что бы текст менялся, если есть одиночные звёздочки, в первой строчке, работает, как надо, а во второй работает неправильно, том должна быть вся строка курсивом, почему она не закурсивилась?
echo preg_replace('#(?<!\*)\*([a-zA-Z\s\.]+)\*(?!\*)#i', '<em>$1</em>', '**bold text with *italic* **'); echo '<br>'; echo preg_replace('#(?<!\*)\*([a-zA-Z\s\.]+)\*(?!\*)#i', '<em>$1</em>', '*italic text **with bold** *'); |
Потому что в строке между одинарными звёздочками есть символы, не подпадающие под правило "[a-zA-Z\s\.]+".
Код:
php -r 'echo preg_replace("#(?<!\*)\*(([a-zA-Z\s\.]|\*\*+)+)\*(?!\*)#i", "<em>$1</em>", "*italic text **with bold** *"), "\n";' |
Не понимаю, я в условие написал {1,} это значит, если повторяется больше одного раза, то это всё удалить, но почему не во всех случаях удаляет?
echo preg_replace('#([\w]+)\s\1{1,}#', '$1', 'hello my my my my my world') //hello world world - работает //hello world world world - не работает //hello world world world world - не работает //hello hello world - работает //hello hello hello hello world - плохо работает //hello my my world - работает //hello my my my world - плохо работает |
Цитата:
|
Заменил {1,} на + и не работает
|
Часовой пояс GMT +3, время: 23:53. |