Я не фанат регулярных выражений + HTML, но здесь идет речь (я только что приготовил простое регулярное выражение & mdash; у вас, вероятно, уже есть):
$s = '<img src="http://img.example.com/img/mage1.jpg" alt="sometile"> <br>
<img src="http://img.example.com/img/image72.jpg" alt="sometile"> <br>
<img src="http://img.example.com/img/imagstr.jpg" alt="sometile"> <br>
<img src="http://img.example.com/img/image.jpg" alt="sometile"> <br>
<img src="http://img.example.com/img/imgger.gif" alt="sometile"> <br>
<img src="http://img.example.com/img/somepic.png" alt="sometile"> <br>';
$i = 0;
function wrap($s) {
global $i;
$i++;
return sprintf('<div><a name="pic%d">%s</div>', $i, $s);
}
print preg_replace('#(<img [^>]+?>) <br>#e', "wrap('\\1')", $s);
( Демо )
Важной частью является модификатор e
в preg_replace()
. Смотрите " Пример # 4 Использование модификатора 'e' ."
EDIT
Как отмечено в комментариях, $i
, безусловно, не лучшее имя для глобальной переменной. Если это будет использоваться в качестве простого «одноразового» преобразования, все может быть в порядке. Если нет, измените имя на то, что не конфликтует. Или поместите это как public static
в классе.
Также существует preg_replace_callback()
. Это лучше подходит, хотя я нахожу передачу имени функции в виде строки и оценку functionName('arg')
почти одинаково уродливо:)