Участник

Зарегистрирован: Mar 2004
Место проживания:
Публикаций: 84
Статус:  |
preg_match_all не выделяет в массив близкорасположенные области
| [сообщение #69376] |
Задача такая: Есть строка. В ней нужно найти слова из списка, выделить жирным и по бокам от них оставить по нескольку слов, ну штук по 10 к примеру (не важно сколько).
Ð_ешаю так(в этом примере оставляются не 10 слов а по 80 символов и потом (здесь не показано) отбрасывается с начала и с конца по неполному слову):
PHP:
$words = implode("|", $words_array);
$str = preg_replace("/($words)/i", "<b>1</b>", $str);
$tmp = preg_match_all("|.{0,80}<b>($words)</b>.{0,80}|i", $str, $hlarray);
print_r($hlarray);
Вот. Если между словами в $words больше 80 символов, не важно где они находятся хоть по краям $str, все работает замечательно. Если же слова стоят рядышком, перестает работать, выводит что-то типа Warning: Unknown modifier 'а' in (script name) и ругается на строку с preg_match_all 
Подскажите плиз где ошибка, и есть ли она вообще (на счет пересечения областей выделения в массив - может так и не должно работать?) а я пока сам поищу поэксперементирую...
Спасибо!
W.M. добавил 29-07-2004 в 15:25:40:
Так, вопрос снимается
Тыкнули пальцем в мануал:
After the first match is found, the subsequent searches are continued on from end of the last match.
Буду искать другие пути... Хотя все навно не понятно, если он после каждого поиска "отрезает" уже просмотренную часть, должен находить тогда хотя бы первое и последнее вхождение... а он выдает ошибку
Сообщение было отредактировано W.M. 29-07-2004 в 14:05
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|