У меня есть такая строка
<a href="http://www.example1.com"><b>12345</b> - John George<br><span>some_text1</span></a>
<a href="http://www.example2.com"><b>67890</b> - George Jerry<br><span>some_text2</span></a>
Используя preg_match_all (PHP), я хочу иметь возможность извлечь URL, ID и имя, но я не понял, хорошо sPattern (смотрите ниже):
$sPattern = "/<a href=\"(.*?)\"><b>(.*?)<\/b>\" - (.*?)\"<br>(.*?)/";
preg_match_all($sPattern, $content, $aMatch);
Я скромно предлагаю использовать HTML-парсер, как DOMDocument
вместо:
$html = '<a href="http://www.example1.com"><b>12345</b> - John George<br><span>some_text1</span></a>
<a href="http://www.example2.com"><b>67890</b> - George Jerry<br><span>some_text2</span></a>';
$dom = new DOMDocument();
$dom->loadHTML($html);
$anchors = $dom->getElementsByTagName('a');
$data = array();
foreach($anchors as $anchor) {
$href = $anchor->nodeValue; // get the anchor href
$b = $anchor->firstChild->nodeValue; // get the b tag value
$data[] = array('href' => $href, 'id' => $b);
}
echo '<pre>';
print_r($data);
Вероятно, лучше, если вы напишите более конкретные шаблоны, попробуйте этот:
$sPattern = "/<a href=\"([ˆ"]+)\"><b>(\d+)<\/b> - ((\w+ )*\w+)<br><span>([^<]+)<\/span><\/a>/";