preg_replace_callback_array
正規表現検索を実行し、コールバックの交換を使用します
preg_replace_callback_array()
関数は、文字列または文字列の配列を返します。ここで、一連の正規表現マッチがコールバック関数の返信値に置き換えられます。
注:各文字列について、関数は指定された順序でパターンを評価します。文字列上の最初のパターンを評価した結果は、2番目のパターンの入力文字列として使用されます。これは予期しない動作につながる可能性があります。
文の各単語に含まれる文字または数字の数を示します。
<?php function countletters ( $ matches ) { $ matches [ 0 ]を返します。 '[' 。 strlen ( $ mates [ 0 ] ) 。 '手紙]' ; } 関数countDigits ( $ matches ) { $ matches [ 0 ]を返します。 '[' 。 strlen ( $ mates [ 0 ] ) 。 'digit]' ; } $ input = "1年に365日あります。" ; $ patterns = [ '/\ b [az]+\ b/i' => 'countletters' 、 '/\ b [0-9]+\ b/' => 'countdigits' ] ; $ result = preg_replace_callback_array ( $ patterns 、 $ input ) ; echo $ result ; ?>
自分で試してみてください
この例は、パターンが連続的な評価で持つ可能性のある潜在的な予期しない効果を示しています。まず、カウントレターの交換により、「[4Letter]」の後に「[4Letter]」が追加されます。交換品を実行した後、CountDigitsの交換は「4レット」で「4」を見つけて「[1Digit]」を追加します。
<?php function countletters ( $ matches ) { $ matches [ 0 ]を返します。 '[' 。 strlen ( $ mates [ 0 ] ) 。 '手紙]' ; } 関数countDigits ( $ matches ) { $ matches [ 0 ]を返します。 '[' 。 strlen ( $ mates [ 0 ] ) 。 'digit]' ; } $ input = "365日" ; $ patterns = [ '/[az]+/i' => 'countletters' 、 '/[0-9]+/' => 'countDigits' ] ; $ result = preg_replace_callback_array ( $ patterns 、 $ input ) ; echo $ result ; ?>
自分で試してみてください