1

コンテンツ内の "c.aspx" (引用符なし) を検索する単純な preg_match が必要です。見つかった場合は、URL 全体を返します。例として

$content = '<div>[4]<a href="/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&amp;n=783622212">New message</a><br/>';

$content の "c.aspx" を preg_match する必要があり、次のような出力が得られます。

"/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&amp;n=783622212"

$content には、「c.aspx」以外のリンクが必要です。私はそれらをしたくありません。「c.aspx」を含むすべての URL のみが必要です。

どうすればできるか教えてください。

4

2 に答える 2

7

正規表現ではなく、DOM を使用して HTML を解析します。ただし、正規表現を使用して属性値を解析できます。

編集:c.aspxをチェックするように例を更新しました。

$content = '<div>[4]<a href="/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&amp;n=783622212">New message</a>

<a href="#bar">foo</a>

<br/>';

$dom = new DOMDocument();
$dom->loadHTML($content);

$anchors = $dom->getElementsByTagName('a');

if ( count($anchors->length) > 0 ) {
    foreach ( $anchors as $anchor ) {
        if ( $anchor->hasAttribute('href') ) {
            $link = $anchor->getAttribute('href');
            if ( strpos( $link, 'c.aspx') ) {
                echo $link;
            }
        }
    }
}
于 2009-09-19T21:49:31.700 に答える
1

c.aspx を含む引用符で囲まれた文字列を検索する場合:

/"[^"]*c\.aspx[^"]*"|'[^']*c\.aspx[^']*'/

しかし、実際には、ほとんどの HTML を解析するには、ある種の DOM パーサーを使用したほうがよいでしょう。これにより、一致するものが実際に href であることを確認できます。

于 2009-09-19T21:50:06.597 に答える