2012-03-11 10 views
1

"orderId"というテキストを "order-id"に変換するpreg-replaceパターンを作成しようとしています。Preg置換パターンfor PHP

$argumentName = "orderId"; 
$argumentName = preg_replace("/([A-Z])/e", "-strtolower($1)", $argumentName); 
echo $argumentName; 

この行の出力は "order0d"です。なぜこれは機能しないのですか?

+1

あなたの正規表現があなたのテキストとどのように関係しているかは本当に分かりません。これはあなたが探している唯一のケースですか?もしそうなら、単純な文字列操作で十分です。 – FailedDev

+0

'-'は[算術演算子](http://php.net/language.operators.arithmetic)で、' strtolower'は文字列を返す関数です。あなたは残りの部分を把握できるはずです。 – Gumbo

+0

私はこのような正規表現を使用することはまだ意味がありません。すべてをIの検索で置き換え、-iで置き換えることができます。 – FailedDev

答えて

1

あなたの交換-文字列が式であることを指定しているので、この:

strtolower($1) 

は(それがあるべきよう)'i'であり、この:

-strtolower($1) 

は「(-'i'です負の'i' ")、文字列'i'を数字— 0と解釈させます。何をしたい

は、文字列'-''i'を連結

$argumentName = preg_replace("/([A-Z])/e", "'-' . strtolower($1)", $argumentName); 

です。

+0

それはうまくいった。ありがとう! – brasimon

+0

@brasimon:どうぞよろしく! – ruakh

1

なぜ/eを使用するのですか?

大文字の前にダッシュを入れてから、文字列全体を小文字にします。

関連する問題