PHP删除字符串中多个字符,想一次性去除。如一次去除 abc 与 123

<?php
$string = 'abcdfgab110123';

$string2 = preg_replace('/abc/','',$string); //去掉中间的abc字符串
echo $string2;
?>

但我还想把中间的 123 去掉

<?php
$string = 'abcdfgab110123';
$string2 = preg_replace('/123/','',$string); //去掉中间的abc字符串
echo $string2;
?>

我需要做成一次执行, 因为数组太多,需要去掉的字符串也多。 想提高效率精简代码

类似如这功能:

$string2 = preg_replace('/123 和 abc /','',$string);

或是 从多个数组中 一起 去除 123 再一起去除 abc

我该怎么实现?

谢谢帮助。

第1个回答  2013-03-20
用strtr
strtr() 函数转换字符串中特定的字符。

语法
strtr(string,from,to)
或者
strtr(string,array)

这里用第二种语法就可以了,将要替换的内容写入一个数组中然后处理,比如:
$replace = array(
'abc' => '',
'123' => ''

);

$string2 = strtr($string, $replace);

也可以直接写成一行:
$string2 = strtr($string,
$replace = array( 'abc' => '', '123' => ''));

另外顺便提一下,没必要用preg_replace,preg_replace是用来正则替换的,你根本没用正则表达式,以后没特殊需要用str_replace就好了,比如$string2 = str_replace('abc', '', $string);
第2个回答  2015-10-03
用strtr
strtr() 函数转换字符串中特定的字符。

语法
strtr(string,from,to)
或者
strtr(string,array)

这里用第二种语法就可以了,将要替换的内容写入一个数组中然后处理,比如:
$replace = array(
'abc' => '',
'123' => ''

);

$string2 = strtr($string, $replace);

也可以直接写成一行:
$string2 = strtr($string,
$replace = array( 'abc' => '', '123' => ''));

另外顺便提一下,没必要用preg_replace,preg_replace是用来正则替换的,你根本没用正则表达式,以后没特殊需要用str_replace就好了,比如$string2 = str_replace('abc', '', $string);
第3个回答  2013-03-20
建议你重写个,再方法里面循环替换即可
$string = preg_replaceAll(array(123,'abc'),'',$string);

function preg_replaceAll($arr,$string){
foreach($arr as $val){
$string = preg_replace($val,'',$string);

}

return $string;//返回数组

}
第4个回答  2013-03-20
$arr = array('123','abc');
$str = 'abcdfgab110123';
$str = str_replace($arr,'',$str);
print_r($str);
第5个回答  推荐于2017-12-16
如果只是固定的123 abc就没必要用正则了.
简单的str_replace就可以了. 比如:

$string = str_replace(array('123', 'abc'), array('', ''), $string);本回答被提问者采纳
相似回答