0

背景のリンクを取得しようとしています

<div class="mine" style="background: url('http://www.something.com/something.jpg')"></div>

私は find('div.mine') を使用しています

$link = find('div.mine');

$link は、すべての

リンクのみを返すように解析するにはどうすればよいですか?

4

2 に答える 2

1

その構文は完全に正しくありません。あなたはやっていますが、代わりに$link = find('div.mine');すべきです。$link = $yourHTML->find('div.mine');

最初にクラス名を持つすべての div を取得し、mineそれらをループして、スタイル属性を取得します。これで、次のような文字列が得られます。

background: url('http://www.something.com/something.jpg') 

次に、CSS パーサー (推奨される方法) または正規表現を使用して、その文字列から URL 部分だけを取得できます。

if(preg_match('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $link, $matches)) {
    $image_url = $matches[0];
}

完全なコード:

$html = file_get_html('file.html');
$divs = $html->find('div.mine');
foreach ($divs as $div) { 
    $link = $div->style; 
}

if(preg_match('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $link, $matches)) {
    $image_url = $matches[0];
}
echo $image_url;

出力:

http://www.something.com/something.jpg

正規表現パターンに一致する URL は、Wordpress のmake_clickable関数のwp-includes/formatting.php. 完全な実装については、この投稿を参照してください。

于 2013-09-27T19:33:40.747 に答える
0

substr()関数でテキストを抽出してみてください

于 2013-09-27T19:31:05.697 に答える