<h1>あいうえお</h1>


<h1 class="section">あいうえお</h1>

<h1 id="SECTION">あいうえお</h1>

<h1>あいうえお</h1>

このどのパターンでもh1タグで囲まれている内容を変数として抽出できる正規表現を教えてください。

$pattern = "<h1>(.*)<\/h1>";
preg_match ( "/".$pattern."/i", $str, $match );

回答の条件
  • URL必須
  • 1人1回まで
  • 登録:2008/07/07 13:31:36
  • 終了:2008/07/14 13:35:02

回答(3件)

id:GoldenDawn No.1

GoldenDawn回答回数426ベストアンサー獲得回数812008/07/07 13:53:48

ポイント27pt
$pattern = "<h1[^>]*?>(.*?)<\/h1>";

こんな感じ?


http://q.hatena.ne.jp

id:akide

回答ありがとうございます。

試してみましたが動作しませんでした。

2008/07/07 14:13:01
id:m_nagase No.2

nagase回答回数58ベストアンサー獲得回数82008/07/07 16:21:25

ポイント27pt
<?php
$str='<h1>あいうえお1</h1> <h1 class="section">あいうえお2</h1> <h1 id="SECTION">あいうえお3</h1> <h1>あいうえお4</h1>';
$pattern='<h1.*?>(.*?)<\/h1>';
$i=preg_match_all('/'.$pattern.'/i',$str,$matches);
for($j=0;$j<$i;$j++){
 print $matches[1][$j].'<br>';
}
?>

http://q.hatena.ne.jp/answer

id:smileless No.3

smileless回答回数13ベストアンサー獲得回数02008/07/07 16:48:50

ポイント26pt

http://www.rider-n.sakura.ne.jp/regexp/regexp.php


ご質問の例を見る限り、PHPでの正規表現とお見受けしましたが、あっていますか?

であれば、

"<h1[^>]*>(.*)<\/h1>"

でマッチします。

"<h1"で始まり、</p>

">"以外の文字が0回以上繰り返し、

">"で終わった後の、

"任意の文字"の0回以上の繰り返しを

"</h1>"の直前まで

抽出する

という意味になります。

おご質問内容ではpreg_match関数=Perl互換の正規表現関数を例に挙げておられますが、

ご紹介した例の正規表現はeregi関数(=POSIX拡張正規表現関数)で使用できるパターンです。

使用例:

$aray_subject=array();

$aray_subject[]='<h1>パターン1あいうえお</h1>';

$aray_subject[]='<h1 class="section">パターン2あいうえお</h1>';

$aray_subject[]='<h1 id="SECTION">パターン3あいうえお</h1>';

$aray_subject[]='<h1>パターン4あいうえお</h1>';

$aray_subject[]='<h1 >パターン5あいうえお</h1>';

$aray_subject[]='そのほか';

$aray_subject[]='<hhh1>そのほか2</h1>';

for($i=0; $i < count($aray_subject); $i++){

$subject = $aray_subject[$i];

if(eregi("<h1[^>]*>(.*)<\/h1>",$subject,$matches)){

echo $matches[1];

echo "
\n";

}

}

?>

→結果

パターン1あいうえお

パターン2あいうえお

パターン3あいうえお

パターン4あいうえお

パターン5あいうえお

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

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

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

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

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