2012-04-07 15 views
1

指定された文字列からHTML画像タグのURLを取得しようとしています。私は、誰もが、この失敗の理由を説明してもらえてください...しかし、私は悩み、以下のリンクからURLを取得したのです、ほとんどの場合、正常に動作PHP方法preg_match("/src=\"([^\s\"]+)/",$body,$matches);PHPの文字列からhtml画像タグを取得

src=http://4.bp.blogspot.com/-LqmY1y4DCO0/T39EoCmzfoI/AAAAAAAACp0/TRKmdPmhJ90/s640/how+to+make+cheesecake+carrots,+orange+cheesecake+recipe,+recipes,+Easter+dessert+.jpg 

使用しています。

+0

これは本当にJavaの質問ですか? 'preg_match()'はデフォルトのJava命名標準に準拠したメソッドではありません。つまり、 'pregMatch();'がより正しいでしょう。 – wattostudios

+0

申し訳ありませんが誤ってJavaを追加しました。修正をありがとう。 –

+1

HTMLまたはHTMLの属性を正規表現で解析するのは悪い考えです。あなたはDOMメソッドでこれを行うことができませんでしたか? (PHPで) –

答えて

0

あなたのテスト文字列にはsrc =の後の文字はなく、正規表現では一致しないと予想しています 正規表現をテストする場合は、プログラムRegexCoachを使用することをお勧めします。それが失敗した場所を簡単に確認できるようにします。DOMと

+0

ありがとう私はそれを試します –

0

ロードをマッチングprocesssをステップ?

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

$xpath = new DOMXPath($dom); 
$img = $xpath->query('//img[@src]'); 

if(count($img)>0) 
{ 
    foreach($img as $i) 
     echo $i->getAttribute('src'); 
} 
+0

申し訳ありません私はこれで初心者です。あなたはDrupalのモジュール内でこれを統合する方法を知っていますか? –

+0

私は決してdrupalを使用しません – ZiTAL

+0

私はimgタグを入れましたが、あなたは特定のタグを使用しません。次の答えを参照してください – ZiTAL

0

この正規表現でそれを試してみてください:)

preg_match_all("/src=([^\\s]+)/", $body, $m); 
print_r($a); 
+0

ありがとうございます。それでも、特定のブログから画像を引き出すことはありません。私はブロガーの両方のプラットフォームで2つのブログを試してみました。 1つは動作し、1つは動作しません。画像を抽出することを禁止するのはブログ設定なのだろうか? –

+0

あなたはHTMLソースを置くことができますか? – ZiTAL

+0

aaaah私はいくつかのタグが二重引用符であるためだと思う – ZiTAL