我想{{}
和}
通過{}}
更換{
,因爲,我需要逃生者{
& }
與{}
。 如果我已經輸入{blah}
我希望我的腳本輸出{{}blah{}}
,請參閱? 但它不是我做了什麼海峽更換和邏輯
$output = str_replace(array("}", "{"), array("{}}", "{{}"), '{blah}');
工作的期待,但作爲輸出我得到這個:{{}blah{{}}}
,而不是{{}blah{}}
我想{{}
和}
通過{}}
更換{
,因爲,我需要逃生者{
& }
與{}
。 如果我已經輸入{blah}
我希望我的腳本輸出{{}blah{}}
,請參閱? 但它不是我做了什麼海峽更換和邏輯
$output = str_replace(array("}", "{"), array("{}}", "{{}"), '{blah}');
工作的期待,但作爲輸出我得到這個:{{}blah{{}}}
,而不是{{}blah{}}
PHP迭代爲你把$搜索參數每個數組項目整個字符串。
事實上,這是你的第一個數組項'{'
更換'{blah}'
爲'{blah{}}'
,然後從進'{{}blah{{}}}'
因爲有另一個'{'
第一置換後。
您最好使用正則表達式來執行此操作,使用單個RegExp模式,它將只在您的輸入字符串中運行一次。
$str = preg_replace('/(\{|\})/', '{\\1}', '{blah}');
這是因爲更換本身包含到搜索的字符串。我會preg_replace_callback
,而不是把它改寫:
echo preg_replace_callback('/{|}/', function($match) {
return $match[0] == '{' ? '{{}' : '{}}';
}, '{bla}');
// {{}bla{}}
+1。我的回答不錯的優化:) –
非常感謝你們! –