するpreg_matchを使用してhtml要素に一致する問題を抱えて
-
19-09-2019 - |
質問
私は、html要素に一致するようにしようとしていますが、私は$タイトル以来のマッチングが空であるとは思わない - 誰も私を修正することができます。
?私のするpreg_matchます:
preg_match_all("~<td align=\"left\" width=\"50%\">[^<]*. <b><a href=\"(.*?)\">[^<]*</a>~i", $main, $titles);
と一致する例HTMLます:
//<td align="left" width="50%">1. <b><a title="Wat" href="http://www.exmple.com/q.html">Wat</a></b><br></td>
私は何かが足りないのですか?
任意の助けてくれてありがとうすべての
解決
title="Wat"
タグで<a>
と一致するものはありません。
でも、私はそれを解析するために正規表現を使用しないことをお勧めしたいです。私はPHPとあまり慣れていないんだけど、それはすでにあなたのための作業のほとんどを行います何かを持っていると確信しています。
他のヒント
私は私のコメントの正規表現で言ったように、
HTMLを解析しようとすると、これまで適切なツールを使用する場合はめったにありません。イムは、私はそれはまだこれらの質問のいずれかにお勧め見たhaventという理由だけでZend_Dom_Queryで、Zend Frameworkの中番目ecomponetnsの1の例を使用することをfoing。だから... ...
$dom = new Zend_Dom_Query($htmlHaystack);
$anchors = $dom->query('//td/a[@title]'); // xpath here
if(count($anchors) > 0)
{
$titles = array();
foreach($anchors as $element)
{
$titles[] = $element->getAttribute('title');
}
}
else
{
$title = null;
}
$string='<td align="left" width="50%">1. <b><a title="Wat" href="http://www.exmple.com/q.html">Wat</a></b><br></td>';
$s = explode("</a>",$string);
foreach($s as $k){
if (strpos($k,"href")!==FALSE){
echo preg_replace('/.*href="|">.*/ms',"",$k);
}
}
所属していません StackOverflow