1

Magpie で RSS フィードからデータを取得しています。
$rss[description] HTML 要素を含む CDATA が含まれています。

<![CDATA[  
<div>  
 <a href='url'>  
  <img src='img_url' alt='aaa' title='bbb' border='0' width='116' height='116'>  
 </a>  
</div>]]>  
Some other text  

これから " " を取得するにはどうすればよいimg_urlですか? preg_match()唯一の方法ですか?多分私はsimpleXMLを使うことができますか?

4

3 に答える 3

0

CDATAあなたが持っているのはHTMLを含む文字列です。したがって、最初はテキストとして扱いますが、このテキストは HTML を含むことを意図しているため、HTML の解析に適したソリューションを使用してこのテキストを解析します。

つまり、ジョブ (HTML の解析) に適切なツール (HTML パーサー) を使用します

PHP で HTML を解析するための既存のソリューションがあります。この質問への回答を参照してください。

  1. PHPでHTMLを解析して処理するには?
  2. PHP 用の堅牢で成熟した HTML パーサー

つまり、基本的に、XML から HTML 文字列を取得することができます。ここで、HTML を解析し、上記のソリューションのいくつかを使用して画像のソースを取得します。

preg_match()HTMLパーサーが適している単純なことを行うには非常に複雑になる必要があるため、 HTMLの解析に使用することはお勧めできません。

于 2012-01-15T19:34:55.407 に答える
0

適切なツールを使用できる場合は、正規表現を使用しない方がよいでしょう。私の頭に浮かんだこと(もっと簡単にできるかもしれませんが):

$descr = $rss[description]; // String. You have extracted description part from your feed

$dom = new DOMDocument();
$dom->loadHTML($descr); // or you can use loadXML
if (!$dom) {
    die('Error loading HTML string.');
}

$xml = simplexml_import_dom($dom);
$imgSrc = (string)$xml->body->div->a->img['src'];

どうぞ。あなたの例に基づいて、 CDATA$imgSrcは と等しくなりimg_urlます。

于 2012-01-15T20:06:21.877 に答える
-1

yes,you should use regex,CDATA means that the data should be treat as normal string without parse,so you should think it as a string..

于 2012-01-12T16:45:26.667 に答える