[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Посоветуйте как выпарсить текст
Bratishka
Добрый вечер, нужно распарсить текст, который идет одной строкой и состоит почти из одинаковых блоков. И если я хочу выпарсить инфу из середины текста, то он и спарсивает все с начала, потому что например символы с которых начинается регулярное выражение <a href='\/ встречаются и в начале, и в середине.
Подскажите как обойти эту проблему



Спустя 22 минуты, 49 секунд (9.06.2012 - 22:23) alexbel2404 написал(а):
выкладывай исходник и укажи, что нужно вытащить

Спустя 15 минут, 23 секунды (9.06.2012 - 22:38) Bratishka написал(а):
alexbel2404
в личку отправил.

Кстати у меня почти получилось - выпарсил блоки текста эти, они массивом. А вот как распарсить массив - хз sad.gif preg_match и preg_match_all не берут

Спустя 1 час, 12 минут, 54 секунды (9.06.2012 - 23:51) Игорь_Vasinsky написал(а):
а массив не распарсивают. зибо выводят нужный элемент по индексу(ключу), либо выводят его в цикле foreach(), for()

Спустя 4 минуты, 53 секунды (9.06.2012 - 23:56) Bratishka написал(а):
а через foreach нельзя попарсить каждый элемент разве? sad.gif

Спустя 5 часов, 4 минуты, 30 секунд (10.06.2012 - 05:01) TranceIT написал(а):
Не сочтите за дерзость, но я один при простейшем парсинге использую curl + explode?
Типа: http://violet.16mb.com/geocities/parser.php
Донор: http://book.geocities.jp/hiwasince75/sub3e.html

Спустя 5 часов, 44 минуты, 36 секунд (10.06.2012 - 10:45) Bratishka написал(а):
TranceIT
если я правильно понял, то explode мне и не нужен, я итак строку разбил на части без него
но вот дальше как получившийся массив пропарсить я не знаю
foreach не получается (

Спустя 4 минуты, 7 секунд (10.06.2012 - 10:49) Игорь_Vasinsky написал(а):
так. я не понял. у тя что то вроде

$page = 'http://site.com/page.html';

preg_match_all("#pattern#", $page, $matches);


да?

посмотреть что попало в $matches моно так

echo '<pre>' . print_r($matches, 1) . '</pre>';


нужный элемент массива можно получить, например так

echo htmlspecialchars($matche[1][0]);

Спустя 21 минута, 21 секунда (10.06.2012 - 11:11) Bratishka написал(а):
Игорь_Vasinsky
ну не совсем так, но типа того.
$page это текст здоровый, в котором я еще поменял \ чтобы парсить можно. Но это не суть, в общем так как Вы написали.
Насчет echo htmlspecialchars($matche[1][0]); - спасибо!
А как мне автоматически пропарсить каждый элемент массива ?

Спустя 43 минуты, 46 секунд (10.06.2012 - 11:54) walerus написал(а):
Bratishka - Да елы палы, что за люди, прикрепи кусок текста который ты парсишь или сохрани его в файл и прикрепи файл, что мы тут гадать должны, что там у тебя и куда, слеши на кой фиг реплейсил?, первый раз слышу, что бы текст подгоняли под регулярку...

Спустя 1 час, 3 минуты, 16 секунд (10.06.2012 - 12:58) Bratishka написал(а):
Текст состоит из 20 блоков типа
{"id":"почти то, что нужно парсить (без html)","file_type":"<div class='file-icon archive'><\/div>","name":"<a href='\/то что нужно парсить.html' target='_blank'>Уникальный текст<\/a>","name_text"

То что нужно парсить и уникальный текст для каждого блока свой.

Спустя 10 минут, 30 секунд (10.06.2012 - 13:08) Игорь_Vasinsky написал(а):
господи... кто вёрстку то научил тебя Json пихать.... нельзя при выводе чтоли обернуть?

есть json_decode() - из этих блоков получишь массив.

всё равно не чётко задача понятна.

и для чего парсить? чтобы вытащить? тогда точно декодируй и работай с массивом.

Спустя 2 минуты, 51 секунда (10.06.2012 - 13:11) Bratishka написал(а):
Надо выпарсить текст <a href='\/отсюда' target='_blank'>Уникальный текст<\/a>","name_text" чтобы дальше использовать его

я массив итак получил, но как пропарсить каждый элемент массива не знаю
через foreach не получается

Спустя 4 минуты, 8 секунд (10.06.2012 - 13:15) Игорь_Vasinsky написал(а):
уф.

берёшь этот элемент массива, например $matches['name'] в котором <a href='\/отсюда' target='_blank'>Уникальный текст<\/a>

preg_match("#<a href=\'\/(.*)\' target=\'_blank\'>.*<\/a>#iusU",$matches['name'], $name);

echo '<pre>' .print_r($name, 1) . '</pre>';

Спустя 3 минуты, 11 секунд (10.06.2012 - 13:18) Bratishka написал(а):
А как сделать чтобы каждый пропарсился элемент?
Быстрый ответ:

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