Bu düzenli ifadelerle yapılabilir mi?
Örnekler
x-example-HEADER:teSt becomes x-example-header:teSt
y-exaMPLE:testoneTWOthree becomes y-example:testoneTWOthree
: Sen e
değiştirici on a regular expression pattern when given to preg_replace
a> yedek parçası olarak PHP kodu aramak amacıyla (bu sayfadaki örnek # 4 bakabilirsiniz) kullanabilirsiniz
$string = "x-example-HEADER:teSt";
$new_string = preg_replace('/(^.+)(?=:)/e', "strtolower('\\1')", $string);
// => x-example-header:teSt
Desen ilk geribaşvuru içine ilk kolon önce her şeyi kapmak ve sonra strtolower
fonksiyonu ile yerini alacak.
Kullan preg_replace_callback()
a>:
$output = preg_replace_callback('![a-zA-Z]+:!', 'to_lower', $input);
function to_lower($matches) {
return strtolower($matches[0]);
}
Aksi takdirde (örneğin, 'bir' mümkün olan 'A' yerine) özel durumlar hariç düzenli ifadeler ile durum dönüşüm yapamazsınız.
Edit: Tamam, sen gün yeni bir şey öğreniyoruz. Bunu yapabilirsiniz:
$output = preg_replace('![a-zA-Z]+:!e', "strtoupper('\\1')", $input);
Dan Pattern Modifiers:
*e (PREG_REPLACE_EVAL) *
If this modifier is set, preg_replace() does normal substitution of backreferences in the replacement string, evaluates it as PHP code, and uses the result for replacing the search string. Single quotes, double quotes, backslashes () and NULL chars will be escaped by backslashes in substituted backreferences.
Only preg_replace() uses this modifier; it is ignored by other PCRE functions.
Ben ancak bir very tehlikeli bir uygulama olabilir kullanıcı girişi ile birlikte, özellikle, uzakta eval () ing dizeleri utangaç olur. Ben genel bir kural olarak preg_replace_callback()
yaklaşımı tercih ediyor.
Sen preg_replace_callback bakmak olabilir