Как сопоставить пробел, возврат каретки и перевод строки с помощью регулярного выражения в PHP? - PullRequest
19 голосов
/ 23 сентября 2011

Я работаю с регулярным выражением в PHP.У меня есть следующая строка:

<img 
src="/files/admin/hotel_website.gif" alt="Go To The Hotel's Web 
Site" align="absmiddle" border="0" class="hotel_icon" />

Эта строка содержит символы возврата каретки и перевода строки.

Я хочу, чтобы мое регулярное выражение заменяло теги html img на IMG, но это не работает стекст выше.

Я обнаружил, что он содержит эти символы, просматривая каждый символ в строке и распечатывая шестнадцатеричное представление, которое можно найти здесь (http://pastebin.com/ViNdBsRV).

Вот мойрегулярное выражение:

strip_tags(preg_replace('/^\s*<img\s*.*\/?>\s*$/i', '[IMG]', $test));

Оцените помощь.

Ответы [ 3 ]

55 голосов
/ 23 сентября 2011

[\n\r]+ Будет соответствовать новым строкам. Для пробелов добавить [\n\r\s]+

9 голосов
/ 23 сентября 2011

Это:

preg_replace("#<img.+?/>#is", '[IMG]', $test)

Лично, когда я делаю регулярное выражение, я всегда стараюсь идти кратчайшим / самым простым.Здесь вы хотите заменить весь тег, который начинается с '<img' и заканчивается на '/>', '.+?' - это не жадный (ленивый) улов.И для модификаторов 'i' для случая и от 's' до . возможность быть новыми строками.

Подробнее о жадности против ленивости: http://www.regular -выражения.info / repeat.html
Подробнее о модификаторах: http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

4 голосов
/ 06 августа 2014

Это сработало для меня, оно соответствует нескольким пробелам и многострочкам, а также любому другому символу или символу.

[\S+\n\r\s]+

Надеюсь, это кому-нибудь поможет.

Это соответствует, например:

stpd  : asdfasdf
this is also matching ***
...