0

こんにちは、誰かが私の preg_match を手伝ってくれたら、このコードからタイトルが欲しいです

    <dt class="gallery-icon">
    <a href="?attachment_id=31" title="title">
        <img width="150" height="150" src="librosdefirmas-bodas-1-150x150.jpg" class="attachment-thumbnail" alt="Caption">
    </a>
</dt>

私はこれを持っています:

preg_match_all('/<dt class="gallery-icon">\s*<a href="(.*)" title="(.*)".*>/is', $page_columns[0], $titles);

しかし、それは私を助けることができますか?

4

2 に答える 2

3

HTML を正規表現で解析しないでください。読んでください。

$html = '
 <dt class="gallery-icon">
    <a href="?attachment_id=31" title="title">
        <img width="150" height="150" src="librosdefirmas-bodas-1-150x150.jpg" class="attachment-thumbnail" alt="Caption">
    </a>
</dt>
';
$dom_document = new DOMDocument();
$dom_document->loadHTML($html);
$dom_xpath = new DOMXpath($dom_document);
$elements = $dom_xpath->query("//dt/a");
print_r( $elements->item(0)->getAttribute('title') );
于 2013-01-11T00:48:35.277 に答える
1

「.*」は貪欲な一致です。つまり、最初の引用符が一致する可能性がある場合、最初の引用符の外に出てしまいます。引用符以外のすべての文字に一致させるには、.* の代わりに [^"]* を使用します。

于 2013-01-11T00:46:49.407 に答える