[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Найти нужный текст в куче мусора.
Страницы: 1, 2
саша28
$str = "какойто текст>физика</td>какойто текст Ф.И.О>Терехова Наталья Александровна</a>какойто текст>Год 1962</a>";
preg_match('~(?s)(?=.*>физика</td>).*Ф.И.О>([a-zA-Z0-9_а-яА-Я,.?!:;" ]+)</a>~', $str, $rezultat);
echo($rezultat[1]);


Уже несколько дней пытаюсь разобраться. Нужно найти текст.
Если есть совпадения >физика</td>
тогда искать и сохранить в переменную то что между этим Ф.И.О> и этим </a> символами, и ещё сохранить год. Такое получилось сделать, проблема в том что таких символов в документе очень много, а нужно именно только то что ближе к символам >физика</td> помогите с такой задачкой. Можно как то с файловыми указателями сделать, но у меня нечего не получилось.
Placido
'~>физика</td>.*Ф.И.О>(.+)</a>.*>Год (\d+)</a>~sU'
саша28
>Год 1962</a>
здесь моддет быть не только год например
>год рождения 62</a>
Placido
'~>физика</td>.*Ф.И.О>(.+)</a>.*>год.*(\d+)</a>~isU'

Советую разобраться с регулярными выражениями, хотя бы с основами - для подобных задач этого хватит. Можно начать со статьи в Википедии. Если есть время и желание - советую почитать книгу Дж. Фриддла "Регулярные выражения".
саша28
Цитата (Placido @ 13.09.2013 - 14:08)
'~>физика</td>.*Ф.И.О>(.+)</a>.*>год.*(\d+)</a>~isU'

Советую разобраться с регулярными выражениями, хотя бы с основами - для подобных задач этого хватит. Можно начать со статьи в Википедии. Если есть время и желание - советую почитать книгу Дж. Фриддла "Регулярные выражения".

в этой книге 459 страниц темболее нет ни слова про PHP еслибы у меня было столько времени я бы необращался на форум.
sergeiss
При работе со строками надо помнить, что чем сложнее регулярное выражение и чем длиннее строка, тем дольше будет идти обработка. Да еще придется потратить время на отработку регулярного выражения, с учетом множества условий...
В то же время даже в официальном хэлпе прямо сказано: не забывайте, что существуют более простые функции smile.gif

В данном случае, если текст большой, то я предложил бы использовать функцию strpos. Находим начало искомой подстроки (вызываем функцию strpos, поиск по тексту 'физика</td>'), далее ищем конец этой подстроки, исходя из уже найденной позиции начала подстроки (опять strpos, только теперь поиск текста '</a>'). И ищем так до самого конца текста. Регулярные выражения ищут подобным образом, причем поиск может быть не оптимальным для определенных условий, и поэтому регулярки могут быть более медленными.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Placido
Цитата (саша28 @ 13.09.2013 - 18:59)
в этой книге 459 страниц темболее нет ни слова про PHP

Как ни слова? В третьем издании целый раздел по PHP - с 519 по 574 стр.
саша28
Цитата (Placido @ 13.09.2013 - 18:43)
Цитата (саша28 @ 13.09.2013 - 18:59)
в этой книге 459 страниц темболее нет ни слова про PHP

Как ни слова? В третьем издании целый раздел по PHP - с 519 по 574 стр.

нашел но там всё так сложно. может поможете, последовательность выполнения несложная, но у меня нечего не получается.
Bolik
а я бы использовал simple_html_dom , загрузил бы все ссылки и выбрал все нужное уже в excel smile.gif
саша28
тоже можно, но мне нужны не ссылки а простой текст.
Игорь_Vasinsky
Цитата
а я бы использовал simple_html_dom

1. работает только с валидным html
2. по сравнению с регулярками - много жрт ресурсов

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
саша28
кто поможет
Bolik
Цитата

2. по сравнению с регулярками - много жрт ресурсов


но по стравнению с регулярками очень прост в обращении и учить там практически ничего не надо. я снимаю шляпу перед людьми, которые пишут без проблем регулярки... cool.gif
Игорь_Vasinsky
Цитата
я снимаю шляпу перед людьми, которые пишут без проблем регулярки

медведей учат на самокатах кататься. это дело практики.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Bolik
саша28

тоже можно, но мне нужны не ссылки а простой текст.


$html = file_get_html('http://www.google.com/');
$link=$html->find('a')->plaintext,

или проходишься циклом по всему массиву ссылок
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.