PHP patlatmak, kolon küçük harf sol her harfi w / patlayabilir kullanımı o yapmak

3 Cevap php

Bu düzenli ifadelerle yapılabilir mi?

Örnekler

x-example-HEADER:teSt becomes x-example-header:teSt

y-exaMPLE:testoneTWOthree becomes y-example:testoneTWOthree

3 Cevap

Kullan preg_replace_callback() :

$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