1

私は html 要素を一致させようとしていますが、$titles が空であるため一致しているとは思いません - 誰でも私を修正できますか?

私の 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>

何か不足していますか?

助けてくれてありがとう

4

3 に答える 3

1

タグに一致title="Wat"するものはありません。<a>

ただし、正規表現を使用して解析しないことをお勧めします。私は PHP にあまり詳しくありませんが、ほとんどの作業を実行できるものが既にあると確信しています。

于 2010-02-09T23:51:49.003 に答える
1

私のコメントで述べたように、正規表現は、html を解析しようとするときに使用する適切なツールであることはめったにありません。Zend Framework のコンポーネントの 1 つである Zend_Dom_Query の例を使用するのは、単にこれらの質問のいずれかで推奨されているのを見たことがないからです。そう...

$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;
}
于 2010-02-10T00:03:55.310 に答える
0
$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);
   }
}
于 2010-02-10T00:08:54.770 に答える