2012-03-04 1 views
1

私はこのラインを持っていると選択肢は...「e」の修飾

preg_replace('/([^\x20-\x7e])/e', '"\\\\\\x" . dechex(ord("${1}"))', $string); 

をにpreg_replaceする...、それは/ e修飾子を持つにpreg_replace()の使用についての警告を生成しています。

私はこの正規表現を代替する方法に関するヒントを探しています。

"preg_replace_callback"を代わりに使用できるとは思っていますが、実際に実装するには何らかの助けが必要です。

私はPHP manualを読んだことがありますが、依然として苦労しています。私の質問は、元のものとは異なるpreg_replace_callbackのものです。

これは有効ですか?

function myCallback($matches) { 
    return '"\\\\\\x" . dechex(ord($matches[1]))'; 
} 
preg_replace_callback('/([^\x20-\x7e])/', 'myCallback', $string); 
+0

*これは有効です*そのように見えるが、していないようですあなたが欲しいもの。関数呼び出しはまだ文字列の中にあります。周囲の一重引用符を削除するだけです。それ以外の場合は、文字列をそのまま返します。 –

答えて

2

あなたはそのようにあなたは、あなたがと交換したい実際の値を返し、コードを返さない:?

function myCallback($matches) { 
    return "\\\\\\x" . dechex(ord($matches[1])); 
} 
関連する問題