Помогите с поиском

$skip

Guest
Помогите с поиском

Как реализовать поиск следующего типа:
в тексте ищю интересующее меня начало, допустим dop="
и окончание "
Допустим строка вида
dop="интерес"
Как мне выделить фразу интерес и продолжить дальше поиск?
 

agx

Программер :-)
Что-то я не въехал в впрос, тебе надо произвести поиск нескольких подстрок в одной?
Если так, то можно использовать регулярные выражения или цикл.
 

$skip

Guest
Мне нужно задать определяющее начало необходмой мне строки и ее конец для выделения искомого текста. При этом скрипт не должен нарываться каждый раз на одно и то же, цикл само сабой, вот как определить сколько необходимых мне фрагментов и как их вытащить не сильно нагружая машину.
 

agx

Программер :-)
Короче, ты задаеш начало строки ($start) и конец строки ($end), и тебе нужно, чтобы скрипт извлек из исходной строки все куски, которые начинаются со $start и заканчиваются на $end ?
Ну, самое простое, хотя это будет не производительно, находя каждый новый фрагмент пихать его в массив, затем вырезать из строки уже просмортенный участок и искать в оставшемся.
А вообще лучше регулярные выражения использовать, типа ereg(). Она, кажется возвращает в 3-ем или 4-ом параметре массив всех найденных совпадений.
Посмотри в мане, я не помню точно.
И еще шаблон надо сформировать правильный, ну в твоем случае это не очень сложно, в мане пример есть.
 

agx

Программер :-)
Примерно так:
//
bool ereg ( string pattern, string string [, array regs])
//
$pattern="$start.*$end";
$ereg($pattern,$string,$array);
 

SelenIT

IT-лунатик :)
Регулярные выражения типа ereg лучше по возможности не использовать. Особенно в циклах. Есть гораздо более быстрые и универсальные [m]PCRE[/m]. Синтаксис у них посложнее, но ненамного.

По-моему, для описанной задачи идеально подходит [m]preg_match_all[/m].
 

$skip

Guest
ну ничего себе, "немного по сложнее". :)

-~{}~ 28.10.04 17:41:

А возможно ли отслеживание символа "@"? Чтобы из текста выделять email адреса. Как сделать чтобы он находил символ и собирал его с расхождением в лево и право до ближайшего пробела или если уже есть такой скрипт, был бы благодарен если бы ткнули, я нигде не нашел :-(
 

SelenIT

IT-лунатик :)
простейший пример (без проверок на "правдоподобие" e-mail'а)
PHP:
preg_match_all("!\b[a-z0-9._]+@[a-z0-9-]+\.[a-z]{2,4}\b!i",$text,$matches);
для описанной задачи должно подойти
 
Сверху