- ベストアンサー
正規表現でタグの中身を抜き出し
<script language="php">・・・・</script> <script language=php>・・・・</script> <?php ・・・・ ?> の中身(・・・・の部分)をpreg_matchで抜き出したいと思っています。 preg_match("/<script language=?"php?">(*.)<\/script>/is" ,$p,$matches) と preg_match("/<php? (*.) ?>/is" ,$p,$matches) としましたがうまくいきません。どのようにしたらいいでしょうか?
- eccschool
- お礼率8% (53/644)
- PHP
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
たとえば "/<script language=?"php?">(*.)<\/script>/is" これって転記のさいの文字化けでしょうか? ダブルコーテーションのエスケープの前が?になってますが・・・ あと一致は「*.」ではなく「.*」ですね "/<script language=\"php\">(.*)<\/script>/is" この辺の凡ミスをなおしてトライアンドエラーで調整してみてから 再度ご質問ください
関連するQ&A
- 正規表現のコーディングについてお願いします。
こんにちは、よろしくお願いいたします。 正規表現パターンを書く場合に皆さんがどのようにされているか教えてください。 例えば(ちょっとムリヤリ感が強いですが)、'Price \5800-' という文字列の \5800 の部分に preg_match でマッチさせたいとします。 単純に考えると、 /\\\d+/ のようなパターンが思いつくのですが、それを文字列として preg_match に渡す際に、コードはどのように書かれますか? <?php $str = 'Price \5800-'; //とりあえず、'/\\\d+/' と書き、'/\\\\\\d+/' と、\ をそれぞれの \ に書き足す if ( preg_match('/\\\\\\d+/', $str, $match) ) { print_r($match); } ?> 「まず、パターンを書き、全ての \ の前に \ を書き足す。」というのが無難なのかな?と思い、そうしていますが、 そういった考え方で間違っていないでしょうか? どうぞよろしくお願いいたします。
- 締切済み
- PHP
- カンマ区切りの金額を検索するための、正規表現を教えてください
PHP4を使っています。 表題のとおりなのですが、 カンマ区切りの金額を検索するための、正規表現を教えていただけないでしょうか? http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/regex-3-14.html を参考に、 $pattern = '^(0|([1-9][0-9]{0,2}(,[0-9]{3}){0,2}))$'; if (preg_match("/$pattern/", $oneline_buffer, $matches)){ としているのですが、 なぜかpreg_matchにひっかかりません。 (preg_match の直前の行を通っていることは、確認済みです) どなたか、お助け願えれば幸いです。
- ベストアンサー
- PHP
- 正規表現 preg_match_all
$c = preg_match_all('@href="/Top/World/Japanese/(?P<query>.*?)">(?:<b>|)(?P<cate>.*?)(?:</b>|)</a>@s', $buf,$match,PREG_SET_ORDER); print_r($match); の(?:<b>|)と(?:</b>|)の部分がまちがっているので、<b></b>タグがあってもなくてもいい場合にマッチさせることができないと思っています。 どうか教えてくださいませ。 ちなみにPHPの5.2.2です。
- ベストアンサー
- PHP
- 正規表現/Uについて
正規表現/Uについて preg_match('/^(.*)(:([0-9]+))?$/U',$HTTP_SERVER_VARS['HTTP_HOST'],$matches)のUは改行などがあってもマッチさせるために入れてあるのでしょうか。また/^(.*)(:([0-9]+))?$/UのUをなくして*や+や?を加えて表すとどんな式になるのでしょうか。
- 締切済み
- PHP
- 正規表現について
PHP5.2.4を使用しています。 任意の数の引数がある文字列をpreg_matchを使ってマッチさせたいのですが、 例えば"ENUM(ab,cd)"は ab と cd の2つの引数があるとします。 次のようなパターン文字列まではアイデアとして浮かんだのですが、 引数の最後は , がないので当然ですがマッチしません・・・ どのようにパターン文字列を記述すれば良いのでしょうか? $str = "ENUM(ab,cd)"; if (preg_match("/ENUM\(([^\,]+\,)+\)/", $str, $match)) { print "{$match[0]}<br>\n"; }
- 締切済み
- PHP
- 、"(ダブルクォーテーション)で囲まれている文字列を正規表現で取得
質問させてください。 abcdef -s "xsalkjsdflsd#$%_asdasdlasdlakjsd&=Daskdjh" asdakjsd のような文字列があります。 これの、"(ダブルクォーテーション)で囲まれている文字列を取得したいのですが、正規表現がうまくいきません。 取得結果としてはは、xsalkjsdflsd#$%_asdasdlasdlakjsd&=Daskdjh の部分がほしいです。 preg_match('/"([.*])"/', $str, $matches);とやったり preg_match('/\"([.*])\"/', $str, $matches);とやったり preg_match('/\"([.*?])\"/', $str, $matches);とやったりしたのですが、 どうしても$matchesにほしい結果は入っていません。 どのような正規表現で取得可能でしょうか? 何卒ご教授ください。
- ベストアンサー
- PHP
- 正規表現の文字化け?で困っています。
preg_matchで、条件を変数で定義したいのですが、うまくいきません。 すみませんが、教えてください。 $str = "hoge.php?a=10&b=3"; から"a=10"をマッチさせる場合。 preg_match('/^(.*(\?|&))(a=.*)(&.*)*$/', $str); で、一応うまくいきます。 マッチ条件を状況により変更させるため、まずは、 $con = "'/^(.*(\?|&))(a=.*)(&.*)*$/'"; preg_match($con, $str); のようにしたいのですが、なぜかマッチしてくれません。 すみませんが、対策方法の分かる方がいらっしゃましたら、ご教授の程、よろしくお願いいたします。
- ベストアンサー
- PHP
- 正規表現で記号 & アンドの検索ってサポートされてない?
preg_matchあるいはereg関数を用いて、 &p=XX (XXは半角数字2桁)のようなパラメーターがURLに含まれるかを調べたいのですが、p=XXまではうまくいくのですが、&p=XXだと マッチしなくなります。 $url = "http://hogehoge.jp/index.php&p=01"; $pattern = "&p=[0-9]{2}"; if (preg_match($pattern, $url)) { echo "ある"; } else { echo "ない"; } ご指導のほど宜しくお願いします。
- ベストアンサー
- PHP
- スクリプトの中から使用されている変数と関数をリストする
phpで書かれたスクリプトファイルの中から使用されている関数と変数をリストアップさせるようなことをしたいのですが、preg_matchを使うのが妥当でしょうか?また、正規表記はどんな感じがベストでしょうか?自分で試してみてもまったくへたくそでして... トホホ ぜひ皆さんの技量を拝見させてください ^^。 <?php $data = file_get_contents('~.php'); $functions = '/\s*\(*/i'; preg_match($functions, $data, $matches); print_r($matches); echo "<br>"; $variables = '/^\$[.+]/i'; preg_match($variables, $data, $matches2); print_r($matches2); echo "<br><br>"; echo $data; ?>
- ベストアンサー
- PHP