⊗ppPmRgVA 258 of 447 menu

PHP正規表現における先読み

時折、次のようなタイプの問題を解決する必要があります: 文字列 'aaa' を見つけて '!' に置き換える、 ただし、'aaa' の直後に 'x' がある場合のみ、かつ 'x' 自体は置き換えない。 この問題を「力ずくで」解決しようとすると、うまくいきません:

<?php preg_replace('#aaax#', '!', 'aaax'); // 結果は '!' だが、求めるのは '!x' ?>

この問題を解決するには、'x' を置き換えるべきではないと示す方法が必要です。 これは、特別な括弧 (?= ) を使用して行われます。 これらの括弧は単に「先を見る」だけで、マッチした内容として取り込みません。

これらの括弧は 肯定先読み と呼ばれます。 肯定というのは、'x'(この場合)が存在しなければならない、その場合にのみ置換が行われるためです。

この括弧を使って私たちの問題を解決してみましょう:

<?php preg_replace('#aaa(?=x)#', '!', 'aaax'); // '!x' を返す ?>

否定先読み もあります - (?! ) - これは逆に、何かが存在してはならないことを示します。 次の例では、'aaa' の直後に 'x' が存在しない場合にのみ置換が行われます:

<?php preg_replace('#aaa(?!x)#', '!', 'aaab'); // '!b' を返す ?>

関数名を含む文字列が与えられます:

<?php $str = 'func1() func2() func3()'; ?>

この文字列から関数名の配列を取得してください。

タグを含む文字列が与えられます:

<?php $str = '<a href="" class="eee" id="zzz">'; ?>

このタグの属性名の配列を取得してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否