Въпрос за парсване с PHP

mvmrik

Well-Known Member
Здравейте, има ли някакъв лесен вариант да извлека сайтове от един html списък. Досега не съм го правил и ми трябва възможно най-лесния вариант. Става въпрос за прост HTML с хиляди записи на сайтове, като естествено всеки започва с <a href="site.com" и свършва с </a>, а на мен ми трябва това, което е вътре, в случая site.com.

Даже ако може всичките резултати да се запишат в един масив, ще е най-добре.

Сигурно ще се оправя и сам, но прегледах набързо и намерих само някакви сложни скриптове, но в момента нямам много време да ги разучавам. Ако има нещо просто, ще се радвам да споделите, ако не - после започвам да ровя по-обстойно :)
 
От: Въпрос за парсване с PHP

Може с регилярен израз, аз предпочитам DOM Document.
Код:
<?php
if ($html = file_get_contents('http://www.dir.bg')) {
	$doc = new DomDocument();
	if (@$doc->loadHTML($html)) {
		$xpath = new DOMXpath($doc);
		$items = $xpath->query('//a');
		foreach($items as $anchor) {
			echo $anchor->getAttribute("href") . "<br/>";		
		}
	}
}
Поздрави.
 
От: Въпрос за парсване с PHP

Можеш и с регулярен израз да ги извадиш от текста:

qxrqd1.jpg
 
От: Въпрос за парсване с PHP

Получи се, а как става номера, ако искам да взема само съдържанието между определени символи. Да речем, че е нещо от сорта: beforeTEXTafter и ми трябва само това TEXT, което всеки път е различно, а before и after не се променят.
 
От: Въпрос за парсване с PHP

Е тук определено с регулярен израз
Код:
/before(.*)after/uis
ако търсената дума съдържа само букви, според мен е добре да се зададе точното множество
Код:
/before([a-zа-я]+)after/uis
модификаторите (буквите след десният сепаратор)
- u за unicode
- i за нечувствителност към регистъра
- s - не мачва новите редове ако има такива
Поздрави.
 

Горе