次のようなHTMLで、divのclassが「a」内のdivのclassがない場合の要素(つまり下の例では、「ccc」)を
取得したいと思って、「class=''」を記述したのですが、これはマッチしませんでした・・・
かといって「//div[@class='a']」だけだと「<div class=b>」にもマッチしてしまいます。
この場合はどのような記述になるのでしょうか?_
$document =<<<EOF
<div class=a><div class=b>bbb</div><div>ccc</div></div>
EOF;
$doc = DOMDocument::loadHTML($document);
$xpath = new DOMXPath($doc);
$items = $xpath->query("//div[@class='a']/div[@class='']");
foreach ($items as $item) {
$arr[] = $item->nodeValue;
}
print_r($arr);
No.2ベストアンサー
- 回答日時:
> ただqueryを使ってやった場合に、今回のようなケースでは
> みなさんはどうやって記述しているのかが知りたくて、
> 想像ですけど、たぶん今回のケースはそんなに難しい記述じゃないかと。。。
解りました。
queryを使ったやり方ですと、下記のように修正していただければOKです。
"//div[@class='a']/div[not(@class)]"
※ただ、書式が定まっていないHTMLの場合、正規表現の方が汎用性がある分、やりやすいと思いますよ。
No.1
- 回答日時:
シンプルに考えて、正規表現で取り出す方法でどうでしょうか。
$document =<<<EOF
<div class=a><div class=b>bbb</div><div>ccc</div></div>
EOF;
// 正規表現で取り出し
preg_match( '/<div class=a>.+?<div>(.+?)<\/div>/', $document, $match );
echo $match[ 1 ];
ご回答ありがとうございます。
なるほど、たしかにこのやり方でできました。
ありがとうございます。
ただqueryを使ってやった場合に、今回のようなケースでは
みなさんはどうやって記述しているのかが知りたくて、
想像ですけど、たぶん今回のケースはそんなに難しい記述じゃないかと。。。
ただそれでも自分は分からないですけど・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タグの中だけ改行を除去したい
-
PHPスクレイピングが上手くいき...
-
PHPに書く記述を教えてください
-
タグのエスケープについて
-
HTMLを組み込む場合。
-
htmlでflashを開く、画面サイズ...
-
VBSでのhtmlタグ要素名の置換
-
VBAのコマンドボタンの文字列の...
-
awkで改行を除いて文字列を抜き...
-
エスケープ文字の復帰(¥r)と...
-
C++で空Enterの入力を判...
-
「続行するには何かキーを押し...
-
Excel関数「COUNTIF」で”文字”...
-
SJIS→UTF-8変換後の文字化けに...
-
電話番号のチェック ハイフン...
-
multipart/form-dataの文字化け
-
C# DataGridViewのセルを改行禁...
-
PHPmailerでの添付ファイルの文...
-
メッセージボックスで1025文字...
-
PHP 複数の特定の文字列を抽出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正規表現でタグの置換をしたい...
-
htmlのソースからテーブルの値...
-
正規表現で複数行に渡る範囲を...
-
phpでhtmlのタイトルを取得する...
-
PHPの正規表現でHTMLタグの内容...
-
reuterの記事をbeautiful.soup....
-
横1行に2種類の画像を交互に5...
-
変数にHTMLを代入する場合
-
タグにはさまれている文字以外...
-
phpの正規表現でstyle="●●"を削...
-
JSFタグのfタグとは
-
Nvuで作成したhtmlをコピペして...
-
URLの結合
-
正規表現でHTMLタグの属性まで...
-
PHPスクレイピングが上手くいき...
-
firefoxで、特定の文字列を含む...
-
VBSでのhtmlタグ要素名の置換
-
preg_match と正規表現 で URL抽出
-
WordPressのhtmlエディタについて
-
objective-cでのHTMLタグ表示に...
おすすめ情報