With the (?R) item you can link only to the full pattern, because it quasi equals to (?0). You can not use anchors, asserts etc., and you can only check that string CONTAINS a valid hierarchy or not. This is wrong: ^\(((?>[^()]+)|(?R))*\)$ However, you can bracketing the full expression, and replace (?R) to the relative link (?-2). This make it reusable. So you can check complex expressions, for e
正規表現で文字列検索を行いたいときにpreg_matchを使うことがある。 $str = 'アストロデオのブログ'; preg_match('/ブログ/', $str, $result); //$resultの中身 array([0] => ブログ) このpreg_match、検索対象の文字列が1行なら特に問題ないのだけど、複数行にまたがるようなときは、上記の書き方だと上手く結果を返してくれない。 file_get_contentsなどでファイルの情報を取得し、さらにその中の一部の情報を取得したいようなとき、1行だけしか検索できないと、都合が悪いことがある。 <div> � � � <p>アストロデオのブログ</p> </div> 例えばsample.htmlに上のようなコードがあり、そこを丸々取得したいとする。 $data = file_get_contents('sample.html
正規表現をまとめてみる。 preg_match で使われる正規表現の書き方の前に まずは、 <検索対象文字列が1行か?それとも複数行か?> 文字列の中からパターンに合致する部分を探し出す場合、その文字列が1行(改行文字が1つ)なのか、複数行(改行文字が複数)なのかで、マッチ演算子を適切に指定。 preg_match("/パターン/", 調べる文字列); "/パターン/" //文字列の1行目のみを調べる "/パターン/g" //複数行を調べる "/パターン/s" //改行文字を無視し、1行とみなして調べる ついでに、 "/パターン/i" //文字列の大文字・小文字を区別しない "/パターン/is" //大文字・小文字を区別せず、1行とみなして調べる <基本> preg_match は、文字列中に現れた最初のパターンのみを検出。
ウノウラボ Unoh Labs: PHPのちょっとしたコツ 最近のスクリプト言語は機能が多く、基本的な機能はほとんど実装されているので、アルゴリズムをどうこうするより、どの機能を使うか選ぶ方が重要だったりしますね(コーディングの効率的にも)。 自分にもそういったレベルで気をつけていることがいくつかあります。 -[早起き生活]PHPのパフォーマンスチューニング -[早起き生活]PHPのパフォーマンスチューニング その2:count()も使い過ぎると重くなる -[早起き生活]PHPのパフォーマンスチューニング その3:APC投入 あと、最近気づいたTIPSとしては、 日本語を正規表現検索したいときでもereg系の関数を使うのはやめとけ なんてのもあります。 PHPの組み込み正規表現関数にはPHP独自のereg系とPerl互換のpreg系がありますが、ヘルプに書いてあるとおり、ereg系
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く