Поиск и выделение в строке

Рейтинг: 0Ответов: 1Опубликовано: 29.11.2014
<?php 
$data='Pages: <a href="?list=1">1</a> <a href="?list=2">2</a> <a href="?list=3">3</a> <a href="?list=4">4</a> <a href="?list=5">5</a>  <a href="?list=6">6</a>';

$str = $poisk;
$data=preg_replace("/($str)/i","<strong>\\1</strong>",$data);
print $data;
?>

На выходе получается (<a href="?list=<strong>3</strong>"><strong>3</strong></a>).

Как сделать, чтобы выделяло только <a href="?list=3"><strong>3</strong></a>?

Ответы

▲ 1Принят
$data=preg_replace("/(?<=>)($str)(?=<)/i","<strong>\\1</strong>",$data);

(?<= означает, что надо посмотреть, что слева, но не учитывать в ответе. Слева ищем ">".
(?= означает, что надо посмотреть, что справа, но не учитывать.

Для общего развития:

(?<! - посмотреть, чего слева НЕ ДОЛЖНО БЫТЬ.
(?! - посмотреть, чего справа не должно быть.