2012-04-05 3 views
0

У меня есть HTML-страницу, содержащую follwing ссылкиДобывающие конкретные ссылки с помощью PHP с HTML страницы

<a class="out" href="www.a.com/hgfgtsdfdffsdfsdf">sdfsssdfddf</a> 
<a href="www.a.com/hgfgt">dsfdsf</a> 
<a class="menu" href="www.a.com/hgfgt">menu1</a> 
<a class="menu" href="www.a.com/hgfgdfg">menu2</a> 
<a class="menu" href="www.a.com/hgfgdfg">menu3</a> 
<a href="www.a.com/hgfgtssdfdfsdf">sdfsdfddf</a> 
<a href="www.a.com/hgfgtsdfsfsdfdf">sdfsdfsddf</a> 
<a href="www.a.com/hgfgtsdfsdfsdf">sdfsdfddf</a> 
<a class="out" href="www.a.com/hgfgtsdfsdfsdf">sdfsdfddf</a> 

Я хочу, чтобы извлечь ссылки и их названия в «меню» класса в массив с помощью PHP, пожалуйста, помогите мне ,

+0

возможно дубликат [Извлечение конкретных ссылок с использованием PHP preg_match_all] (http://stackoverflow.com/questions/10010503/ extracting-specific-links-using-php-preg-match-all) – mario

ответ

0
$str = '<a class="out" href="www.a.com/hgfgtsdfdffsdfsdf">sdfsssdfddf</a> 
<a href="www.a.com/hgfgt">dsfdsf</a> 
<a class="menu" href="www.a.com/hgfgt">menu1</a> 
<a class="menu" href="www.a.com/hgfgdfg">menu2</a> 
<a class="menu" href="www.a.com/hgfgdfg">menu3</a> 
<a href="www.a.com/hgfgtssdfdfsdf">sdfsdfddf</a> 
<a href="www.a.com/hgfgtsdfsfsdfdf">sdfsdfsddf</a> 
<a href="www.a.com/hgfgtsdfsdfsdf">sdfsdfddf</a> 
<a class="out" href="www.a.com/hgfgtsdfsdfsdf">sdfsdfddf</a>'; 

preg_match_all('#<a class="menu" href="([^"]+)">([^<]+)#', $str, $m); 

var_dump($m[1], $m[2]); 
0
preg_match_all('#<a class="menu" href="([^"]+)">([^<]+)</a>#', $content, $matches); 
0

Вот как это сделать с DOMDocument и XPath:

$html = ' 

<a class="out" href="www.a.com/hgfgtsdfdffsdfsdf">sdfsssdfddf</a> 
<a href="www.a.com/hgfgt">dsfdsf</a> 
<a class="menu" href="www.a.com/hgfgt">menu1</a> 
<a class="menu" href="www.a.com/hgfgdfg">menu2</a> 
<a class="menu" href="www.a.com/hgfgdfg">menu3</a> 
<a href="www.a.com/hgfgtssdfdfsdf">sdfsdfddf</a> 
<a href="www.a.com/hgfgtsdfsfsdfdf">sdfsdfsddf</a> 
<a href="www.a.com/hgfgtsdfsdfsdf">sdfsdfddf</a> 
<a class="out" href="www.a.com/hgfgtsdfsdfsdf">sdfsdfddf</a> 

'; 

$classname = 'menu'; // class to find 

$doc = new DOMDocument(); 
$doc->loadHTML($html); 

$xpath = new DOMXPath($doc); 

$result = $xpath->query("//*[contains(@class, '$classname')]"); 

foreach($result as $elem) 
{ 
    echo "title: " . $elem->nodeValue . "<br />"; 
    echo "link: " . $elem->getAttribute('href') . "<br />"; 
} 
+0

, показывая ошибку: Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: тег nobr недействителен в Entity, строка: 385 в C: \ xampp \ htdocs \ curl \ l.php в строке 20 Предупреждение: DOMDocument :: lo adHTML() [domdocument.loadhtml]: htmlParseEntityRef: ожидание ';' в Entity, строка: 385 в C: \ xampp \ htdocs \ curl \ l.php в строке 20 Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: expecting ';' в Entity, строка: 385 в C: \ xampp \ htdocs \ curl \ l.php в строке 20 –

+0

DOMDocument придирчив к HTML. В этом случае вы можете подавить предупреждение, используя знак @ для вызова loadHTML(), например: '@ $ doc-> loadHTML ($ html);' – MrCode

Смежные вопросы