• ベストアンサー

今日の<h1>(.*)</h1>です。正規表現で質問があります。

mb_ereg("今日の<h1>(.*)</h1>です。",$a,$b) で、<h1>~</h1>の間の文字をすべて抜き取りたいのですが、 抜き取ってくれません。 抜き取り先のHTMLはUTF-8で記述されていたので、 mb_internal_encodingでUTF-8に phpにファイルもすべて、UTF-8で記述したのですが、 どうしても抜き取ってくれません。 正規表現に間違いがあるのでしょうか? 何かアドバイスいただけませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#2>このようなエラー文がはきだされませんでしょうか? でませんでした。 1.まず、以下のような単純なマッチングがうまくいくかテストしてみる。 <?php $a="今日の<h1>タイトル</h1>です。"; if(mb_ereg("今日の<h1>(.*)</h1>です。",$a,$b)){ print $b[1]; } ?> 2.読込先のHTMLを読み込んで、単に表示してみる などして、問題を切り分けるところからやってみてはどうでしょう

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>mb_internal_encodingでUTF-8に >phpにファイルもすべて、UTF-8で記述したのですが、 ということなので、必要ないかもしれませんが mb_regex_encoding("UTF-8"); も試してみてはどうでしょうか

参考URL:
http://jp.php.net/manual/ja/function.mb-regex-encoding.php
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

正規表現自体は別に間違っていません。 こちらで試してみたところでは問題なく動作しました。

MrYoYoYo
質問者

補足

Warning: mb_ereg(): mbregex compile err: premature end of regular expression in このようなエラー分がはきだされませんでしょうか?

回答No.1

eregi("<h1>*(.+)</h1>",$strData,$aryMatch); これでどうでしょう。 $aryMatch[]にヒットした文字列が格納されます。 エンコーディングは直前でなんとかしてください。

関連するQ&A