Помогите решить ошибку в регулярке

VIRUS

Новичок
Помогите решить ошибку в регулярке

Вот кусок кода:
PHP:
error_reporting(E_ALL);
$k=1;
$photos[$k]="1165351726.gif";
$message="[img align=left]http://ra-hr.ru/admin/adm_a1_b4.php/upload/a1_b4/1165351723.gif[/img]
[img align=left]http://ra-hr.ru/admin/adm_a1_b4.php/upload/a1_b4/1165351726.gif[/img]";
echo $message."<p>";
$message=preg_replace("/\[img(.*?)\](.+?)".$photos[$k]."\[\/img\]/im", "", $message);
echo $message;
?>
В пероеменной $message есть несколько ббкодов прикрепленных изображений и надо что бы удалялся один ббкод в котором есть имя файла $photos[$k] Если в данном примере это имя файла 11653151723, то удаляется нормально, если 11653151726 то он удаляет все впереди идущие и его, а мне надо что бы только один, и что бы регулярное выражение отвечало:
[img<тут ничего или несколько любых символов>]<тут одby или более любых символов><$photos[$k]>[/img]
 

whirlwind

TDD infected, paranoid
ну ограничь (.+?) символом ] что бы не жрал от предыдущего.

Конкретно твой пример у меня отработал правильно - остался ***23.gif руководствуясь мод-телепатом это то, что ты хочешь получить.
 

VIRUS

Новичок
Автор оригинала: whirlwind
ну ограничь (.+?) символом ] что бы не жрал от предыдущего.

Конкретно твой пример у меня отработал правильно - остался ***23.gif руководствуясь мод-телепатом это то, что ты хочешь получить.
Он у тебя работает правильно, потому что между [/img] и
 

Андрейка

Senior pomidor developer
VIRUS
еще раз - убери все .*? они не так работают, как думаешь ты.. замени на ([^\[]*)
 

Андрейка

Senior pomidor developer
VIRUS
потому, что ты не совместим с регулярками
подробное объяснение на уровне "занимательная механника для чайников" как будет работать регулярка и что чему будет сопоставлено - должно быть в мануале (читать много)
 
Сверху