Регулярное выражение PHP для замены тега html img на [IMG] - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть следующее регулярное выражение для замены тега html img на [IMG];

echo preg_replace('/(^<img) (.*) (>$)/i', '[IMG]', $subject);

В определенной степени это работает, как и ожидалось, однако некоторые теги img, с которыми я работаю, заканчиваются'/>' и некоторые заканчиваются на '>'.Я не могу заставить вышеуказанное работать с последним.

Пример 1 (работает):

<img src="image-1.gif" alt="image-1" width="175>" height="80" />

Пример 2 (не работает)

<img src="image-2.gif" width="77" height="51" alt="image-2">

Ценю помощь.

Ответы [ 3 ]

1 голос
/ 19 сентября 2011

Хотя Пекка и вправе сказать, что вам следует использовать анализатор HTML (я полностью согласен), для образования вы можете использовать «необязательный» символ ?, который помечает предыдущий символ как необязательный:

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

Уведомление \\\?.Мы избегаем обратной косой черты и вопросительного знака (с обратной косой чертой) и затем говорим «этот символ необязательный».

0 голосов
/ 19 сентября 2011

Я бы попробовал использовать парсер DOM.Они гораздо надежнее.

http://simplehtmldom.sourceforge.net/

0 голосов
/ 19 сентября 2011

Я бы предложил выбрать URL, а затем вручную написать тег [IMG].

например.

preg_match('/src="(.*?)"/', '<img src="image-2.gif" width="77" height="51" alt="image-2">', $matches)
echo '[IMG]'.$matches[1].'[/IMG]';

Шай.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...