2012-05-05 11 views
1

preg_match_allを使用して特定のhtmlタグ間のすべてのコンテンツを取得しようとしましたが、空の結果が生成されています。<span>と</span>タグとテキストを含むすべての取得方法

タグ間にコンテンツを取得する方法はありますか?このように -

<span class="st"> EVERYTHING IN HERE INCLUDING TAGS<B></B><EM></EM><DIV></DIV>&+++ TEXT </span> 
+1

何が空のリクエストを生成しますか? (そして、HTMLは無効なので、解析されると予期しない結果が出る可能性があります)。 – Quentin

+0

私のPHPコードはwth preg_match_all!はい、それは私が助けを求めるためにここで尋ねた、それを行う方法を知っている問題をthats! –

+1

ようこそスタックオーバーフロー! RegExを使ってHTMLを解析することは、[あなたを狂ってしまう]ようにしないでください(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) 。代わりに、[HTMLパーサ](http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php)を使用してください。 –

答えて

-2

preg_match

$str = "<span class=\"st\"> EVERYTHING IN HERE INCLUDING TAGS<B></B><EM></EM><DIV></DIV>&+++ TEXT </span>"; 
preg_match("/<span class=\"st\">([.*?]+)<\/span>/i", $str, $matches); 
print_r($matches); 
+0

ドキュメント内に他の ''タグがない限り... 'preg_match'はおそらく[この仕事の間違ったツール]です(http://stackoverflow.com/a/1732454/19068) – Quentin

+0

RegExを使ってHTMLを解析するのを控えてください(あなたを狂気にさせる)(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)。代わりに、[HTMLパーサ](http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php)を使用してください。 –

+0

"Array()"のような結果が得られます! –

1

preg_matchでこれを試してみてください少し複雑である特にあなたの場合には、HTMLの構文解析では非常に良いではありません。

代わりに、HTMLパーサーを使用して、探している要素を取得します。以下は、最初のspan要素を選択する簡単な例です。これは、より多くのあなたに開始するためのいくつかのポインタを与えるために、例えば同様にクラス属性を探すことにより区別することができます。

$html = '<span class="st"> EVERYTHING IN HERE INCLUDING TAGS<B></B><EM></EM><DIV></DIV>&+++ TEXT </span>'; 
$doc = new DOMDocument(); 
$doc->loadHTML($html); 
$span = $doc->getElementsByTagName('span')->item(0); 
echo $doc->saveHTML($span); 

は出力:

<span class="st"> EVERYTHING IN HERE INCLUDING TAGS<b></b><em></em><div></div>&amp;+++ TEXT </span> 

よく見ると、あなたが見ることができます有効なHTMLではない&+++で、HTMLエラーさえ修正されました。

あなただけの内側のHTMLが必要な場合は、span要素の子を反復処理する必要があります。

あなたを与える
foreach($span->childNodes as $child) 
{ 
    echo $doc->saveHTML($child); 
} 

EVERYTHING IN HERE INCLUDING TAGS<b></b><em></em><div></div>&amp;+++ TEXT 

私はこれが便利です願っています。

関連する問題