Мне нужен Php-RegEx, чтобы найти все теги изображений в строке php и заменить все кавычки (например, ") в объекте тега изображения".

$mystring = '<p class="testclass">test tag with p</p><p><img src="test1.jpg" width="100" /></p><p><img src="test2.jpg" width="100" /></p>';

Результат, который мне нужен, следующий:

<p class="testclass">test tag with p</p><p><img src=:quot:test1.jpg:quot: width=:quot:100:quot: /></p><p><img src=:quot:test2.jpg:quot: width=:quot:100:quot: /></p>

Я протестировал следующий код:

$rep_html = '<p class="testclass">test tag with p</p><p><img src="test1.jpg" width="100" /></p><p><img src="test2.jpg" width="100" /></p>';
$rep_html = preg_replace('#<img ([^"]) />#',":quot:", $rep_html);

Или / и:

$rep_html = preg_replace('#<img ([\x22]) />#',":quot:", $rep_html);

... К сожалению, код так не работает. Цитаты не имеют формата: quote :.

Мне не нужен Php "domDocument" с "loadHTML" ... Только Php RegEx ...

Может кто мне поможет?

-2
Integer 25 Фев 2016 в 21:32

3 ответа

Лучший ответ

Ищи

<(?!img)[^>]*>[^<]*(*SKIP)(*FAIL)|"

Заменить

:quot:

Пример Regex101, где code generator слева дает вам экранированную версию кода PHP.

1
Casimir et Hippolyte 25 Фев 2016 в 23:33

Я протестировал следующий код:

$rep_html = '<p class="testclass">test tag with p</p><p><img src="test1.jpg" width="100" /></p><p><img src="test2.jpg" width="100" /></p>';
$rep_html = preg_replace('#<img ([^"]) />#',":quot:", $rep_html);

Или / и:

$rep_html = preg_replace('#<img ([\x22]) />#',":quot:", $rep_html);

... К сожалению, код так не работает. Цитаты не имеют формата: quote :.

0
Integer 25 Фев 2016 в 18:47

Сделав меньше шагов, вы можете использовать этот шаблон:

\G(?:(?!\A)|[^<]*+(?:<(?!img)[^>]*+>[^<]*+)*+<)[^">]*+\K"

демо

Или вы можете использовать шаблон @OnlineCop с модификатором S.

0
Casimir et Hippolyte 25 Фев 2016 в 23:35