DOMでクラスが2つある場合の指定の仕方を教えてください。


DOMでCSSセレクタ、またはXPathにて以下のテキスト部分だけを抽出したいと思っているのですがどのようにすればいいのでしょうか?
自分はPHP5.3.8をcentOS6にて使っているのですが、
$results = $dom->query('div[class="cmn-article_text JSID_key_fonttxt"]');
とか、いくつか試してみたのですが上手くいきませんでした。

<div class="cmn-article_text JSID_key_fonttxt">
<p>
こんにちは。今日は秋風を感じる一日でした。
</p>
</div>

classが2つあるからダメなのかなとも思ったのですが(classなどが2つある場合はどのようにすればいいのでしょうか?)、良く分かりませんでした。
CSSセレクタ、XPathにてどのように記述すればよろしいのかアドバイスを頂けたらと思います。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/11/08 14:42:24
  • 終了:2011/11/15 14:45:03

回答(1件)

id:TransFreeBSD No.1

TransFreeBSD回答回数665ベストアンサー獲得回数2672011/11/08 22:42:45


<?php
include_once "simple_html_dom.php";

$html = str_get_html(<<<HTML
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<div>xxx</div>
<div class="cmn-article_text JSID_key_fonttxt"><p>hoge</p></div>
HTML
);
echo $html->find('div.cmn-article_text', 0)->text() . "\n";
echo $html->find('div.[class=cmn-article_text]', 0)->text() . "\n";
echo $html->find('div.[class*=cmn-article_text]', 0)->text() . "\n";
echo $html->find('div.[class=cmn-article_text JSID_key_fonttxt]', 0)->text() . "\n";
echo $html->find('div.[class="cmn-article_text JSID_key_fonttxt"]', 0)->text() . "\n";
//echo $html->find('div.[class="cmn-article_text a"]', 0)->text() . "\n";
?>

最後のコメントアウト以外問題ありませんでした。

findの引数が1つだとarrayを返す、と言うのを忘れていませんか?

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません