3 回答

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
這里不需要正則表達(dá)式:
$string = str_replace(['{','[','<'], '(', str_replace(['}',']','>'], ')', $string));
或者使用一次調(diào)用,strtr
但數(shù)組會(huì)更長(zhǎng)。

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以使用
$string="{1},[2],(3),<4>";
$what = ['~[{[<]~', '~[]}>]~'];
$with = ['(', ')'];
$string = preg_replace($what, $with, $string);
echo $string;
這里,
[{[<]-匹配三個(gè)字符之一的字符類(lèi):{, [或<
[]}>]- 匹配三個(gè)字符之一:], }or >(注意,]當(dāng)它是類(lèi)中的第一個(gè)字符時(shí),字符類(lèi)內(nèi)部不必轉(zhuǎn)義)。
請(qǐng)參閱PHP 演示。
您也可以使用單個(gè)調(diào)用preg_replace_callback:
$string = preg_replace_callback('~([{[<])|[]}>]~', function ($m) {
return !empty($m[1]) ? "(" : ")";
}, $string);
請(qǐng)參閱此 PHP 演示。
該([{[<])模式將開(kāi)始標(biāo)點(diǎn)捕獲到組 1 ( $m[1]) 中,如果找到匹配項(xiàng)后組不為空,(則返回,否則)替換為。
- 3 回答
- 0 關(guān)注
- 231 瀏覽
添加回答
舉報(bào)