Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: убрать экранирование в тегах img
Форумы портала PHP.SU » PHP » Регулярные выражения » убрать экранирование в тегах img

Страниц (1): [1]
 

1. ladan - 13 Марта, 2012 - 12:42:45 - перейти к сообщению
Добрый день, есть строка с заэкранированными двойными кавычками, нужно убрать экранирование в нутри тегах img

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $text = "<p> \\\"ясное небо\\\" <img src=\\\"http://i024.radikal.ru/1203/7e/a3c322da60c2.jpg\\\" alt=\\\"\\\" width=\\\"200\\\" height=\\\"326\\\" /> </p> \\\"и здесь\\\" <img src=\\\"http://s019.radikal.ru/i626/1203/58/393ec5151057.jpg\\\" alt=\\\"\\\" width=\\\"200\\\" height=\\\"326\\\" />";
  3.  

подскажите пожалуйста как правильно регулярное выражение написать? Огорчение
2. Мелкий - 13 Марта, 2012 - 13:38:30 - перейти к сообщению
3. ladan - 13 Марта, 2012 - 13:44:23 - перейти к сообщению
Мелкий пишет:

Не совсем, нужно на выходе примерно такое:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. /*
  3. <p> \"ясное небо\" <img src="http://i024.radikal.ru/1203/7e/a3c322da60c2.jpg" alt="" width="200" height="326" /> </p> \"и здесь\" <img src="http://s019.radikal.ru/i626/1203/58/393ec5151057.jpg" alt="" width="200" height="326" />
  4. */
  5.  

Экранирование убирается только в тегах img
4. Мелкий - 13 Марта, 2012 - 13:48:56 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $sResult = preg_replace_callback('@<img[^>]+>@', function($match){
  2. return stripslashes($match[0]);
  3. }, $text)

Ну если не париться и PHP5.3+
5. ladan - 13 Марта, 2012 - 16:20:12 - перейти к сообщению
Мелкий пишет:
PHP:
скопировать код в буфер обмена
  1. $sResult = preg_replace_callback('@<img[^>]+>@', function($match){
  2. return stripslashes($match[0]);
  3. }, $text)

Ну если не париться и PHP5.3+


СПАСИБО! Вы мозг php Улыбка

CODE (htmlphp):
скопировать код в буфер обмена
  1. А такой вопрос, в Вашей регулярке @<img[^>]+>@, внутри квадратных скобках я так понял- это любой символ, кроме закрывающегося тега.
  2.  Для чего так нужно писать, если на конце уже стоит закрывающийся тег?
  3.  
  4. и в чем разница @<img.+>@ и @<img.+?>@
  5.  
  6.  
6. snikers987 - 13 Марта, 2012 - 17:36:35 - перейти к сообщению
Цитата:
и в чем разница @<img.+>@ и @<img.+?>@

Первый вариант захватывает найбольшее вхождение, второй найменьшее.
Цитата:
А такой вопрос, в Вашей регулярке @<img[^>]+>@, внутри квадратных скобках я так понял- это любой символ, кроме закрывающегося тега.

Для чего так нужно писать, если на конце уже стоит закрывающийся тег?

Потому что там может быть любой символ, кроме > от 1 и более вхождений, за ним должен быть символ >
7. Мелкий - 13 Марта, 2012 - 18:00:13 - перейти к сообщению
ladan пишет:
Для чего так нужно писать, если на конце уже стоит закрывающийся тег?

Поэкспериментируйте Подмигивание
У меня просто так быстрее получается регулярно выразиться, что нужно именно содержимое тега и именно его одного.
Иначе можно получить слишком много - от <img до вообще последнего встретившегося >, т.е. ухватили бы всё и между тегами img. Это в случае жадного поиска.
Если не поставить, что должен быть явно > - то получится от начала <img до конца всего фрагмента при жадном и только сам <img с пробелом при нежадном.
8. ladan - 13 Марта, 2012 - 18:35:51 - перейти к сообщению
snikers987 пишет:
Цитата:
и в чем разница @<img.+>@ и @<img.+?>@

Первый вариант захватывает найбольшее вхождение, второй найменьшее.
Цитата:
А такой вопрос, в Вашей регулярке @<img[^>]+>@, внутри квадратных скобках я так понял- это любой символ, кроме закрывающегося тега.

Для чего так нужно писать, если на конце уже стоит закрывающийся тег?

Потому что там может быть любой символ, кроме > от 1 и более вхождений, за ним должен быть символ >


это я понял, что может быть любой символ, кроме >

Но явно в
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <img src=\\\"http://i024.radikal.ru/1203/7e/a3c322da60c2.jpg\\\" alt=\\\"\\\" width=\\\"200\\\" height=\\\"326\\\" />
  3.  

нету символа >
Прописал даже так @<img[^а-я]+>@ и также регулярку удовлетворяет, тогда как @<img.+>@ не удовлетворяет
(Добавление)
все, вроде разобрался с жадными и ленивыми

 

Powered by ExBB FM 1.0 RC1