Как сопоставить пробелы, возврат каретки и строку с использованием регулярного выражения в PHP?
Я работаю с регулярным выражением в PHP. У меня есть следующая строка:
<img
src="/files/admin/hotel_website.gif" alt="Go To The Hotel 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));
Оцените справку.
Ответы
Ответ 1
Это:
preg_replace("#<img.+?/>#is", '[IMG]', $test)
Лично, когда я делаю регулярное выражение, я всегда стараюсь сделать кратчайший/самый простой.
Здесь вы хотите заменить весь тег, который начинается с "<img
" и заканчивается на "/>
", ".+?
" - это не жадный (ленивый) улов.
А для модификаторов "i
" для случая и "s
" - .
возможность быть новыми строками.
Подробнее о жадности и ленивости: http://www.regular-expressions.info/repeat.html
Подробнее о модификаторах: http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php
Ответ 2
[\n\r]+
Будет соответствовать новым строкам. Для белых пространств добавьте [\n\r\s]+
Ответ 3
Это сработало для меня, оно соответствует нескольким пробелам и многострокам, а также любому другому символу или символу.
[\S+\n\r\s]+
Надеюсь, это поможет кому угодно.
Он соответствует, например:
stpd : asdfasdf
this is also matching ***