這是代碼:$string="{1},[2],(3),<4>";// Replaces closing square, curly, angle brackets with round brackets$string = preg_replace('/\{\[\</', '(', $string);$string = preg_replace('/\}\]\>/', ')', $string);它根本沒有替換那個字符串......還有比這更好的編碼嗎?謝謝。
3 回答

慕標琳琳
TA貢獻1830條經驗 獲得超9個贊
這里不需要正則表達式:
$string = str_replace(['{','[','<'], '(', str_replace(['}',']','>'], ')', $string));
或者使用一次調用,strtr
但數組會更長。

湖上湖
TA貢獻2003條經驗 獲得超2個贊
您可以使用
$string="{1},[2],(3),<4>";
$what = ['~[{[<]~', '~[]}>]~'];
$with = ['(', ')'];
$string = preg_replace($what, $with, $string);
echo $string;
這里,
[{[<]-匹配三個字符之一的字符類:{, [或<
[]}>]- 匹配三個字符之一:], }or >(注意,]當它是類中的第一個字符時,字符類內部不必轉義)。
請參閱PHP 演示。
您也可以使用單個調用preg_replace_callback:
$string = preg_replace_callback('~([{[<])|[]}>]~', function ($m) {
return !empty($m[1]) ? "(" : ")";
}, $string);
請參閱此 PHP 演示。
該([{[<])模式將開始標點捕獲到組 1 ( $m[1]) 中,如果找到匹配項后組不為空,(則返回,否則)替換為。
- 3 回答
- 0 關注
- 229 瀏覽
添加回答
舉報
0/150
提交
取消