人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

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

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




●質問者: akide
●カテゴリ:ウェブ制作
✍キーワード:h1 STR あいうえお タグ パターン
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

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

こんな感じ?


http://q.hatena.ne.jp

◎質問者からの返答

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

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


2 ● nagase
●27ポイント
<?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


3 ● smileless
●26ポイント

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あいうえお

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ