これは正規表現で行うことができますか?
例
x-example-HEADER:teSt は x-example-header:teSt になります
y-exaAMPLE:testoneTWOthree は y-example:testoneTWOthree になります
これは正規表現で行うことができますか?
例
x-example-HEADER:teSt は x-example-header:teSt になります
y-exaAMPLE:testoneTWOthree は y-example:testoneTWOthree になります
$output = preg_replace_callback('![a-zA-Z]+:!', 'to_lower', $input);
function to_lower($matches) {
return strtolower($matches[0]);
}
それ以外の場合は、特定の場合を除き、正規表現で大文字と小文字を変換することはできません (たとえば、'A' を 'a' に置き換えることが可能です)。
編集:わかりました、あなたは毎日何か新しいことを学びます. あなたはこれを行うことができます:
$output = preg_replace('![a-zA-Z]+:!e', "strtoupper('\\1')", $input);
パターン修飾子から:
e (PREG_REPLACE_EVAL)
この修飾子が設定されている場合、 preg_replace()は、置換文字列で後方参照の通常の置換を行い、それを PHP コードとして評価し、その結果を検索文字列の置換に使用します。一重引用符、二重引用符、バックスラッシュ ()、および NULL 文字は、置換後方参照でバックスラッシュによってエスケープされます。
preg_replace()のみがこの修飾子を使用します。他の PCRE 関数では無視されます。
ただし、特にユーザー入力と組み合わせると、非常に危険な行為になる可能性があるため、文字列を eval() することは避けます。preg_replace_callback()
私は一般的なルールとしてアプローチを好むでしょう。
置換の一部として PHP コードを呼び出すために、(そのページの例 #4 を見てください) に与えられたときに正規表現パターンでe
修飾子を使用できます。preg_replace
$string = "x-example-HEADER:teSt";
$new_string = preg_replace('/(^.+)(?=:)/e', "strtolower('\\1')", $string);
// => x-example-header:teSt
このパターンは、最初のコロンの前のすべてを最初の後方参照に取り込み、それをstrtolower
関数に置き換えます。
$str = 'y-exaMPLE:testoneTWOthree';
function lower( $str ) {
return strtolower( $str[1] );
}
echo preg_replace_callback( '~^([^:]+)~', 'lower', $str );