我确定这是重复但我无法通过搜索找到答案。
这是我的代码
str_replace([' ',-,\(,\),\*,-,\|,\/], '', $params['telephone']), '0'
这是有效的。我想要的是:
str_replace([' ',-,\(,\),/,|,\*,-,\#,\], '', $params['telephone']), '0'
一旦我添加#
或\
,它就会失败,并且逃避它们似乎无法正常工作。是否有不同的方式逃避它们?
虽然它似乎有效但似乎并没有取代最初的空间。这可能是我问题的根源吗?
答案 0 :(得分:3)
您要删除空格,-
,(
,)
,*
,-
,|
,{{1} }以及字符串中的/
和\
符号。
您需要将这些字符数组传递给str_replace
:
#
或者,您可以使用preg_replace
这样的正则表达式:
$arr = [ '-', '(', ')', '*', '-', '|', '/', '\\', '#'];
$result = str_replace($arr, '', $s);
请参阅PHP demo。
正则表达式详情:
$res = preg_replace('~[- ()*|/\\\\#]~', '', $s);
是所有~
函数preg_
必须放在角色类的开头/结尾,或者放在其他任何地方进行转义,以匹配文字-
-
符号必须与2个文字\
匹配,这意味着需要4个反斜杠才能匹配单个文字反斜杠\
,*
,(
,)
(和|
,+
,?
(也)失去特殊地位而不需要逃脱.
正则表达式分隔符后添加u
修饰符:~
。<强> The difference between string replace and preg replace 强>
'~[- ()*|/\\\\#]~u'
替换特定匹配的文字字符串,例如str_replace
只匹配并替换:foo
。
foo
将使用正则表达式执行替换,例如preg_replace
将匹配并替换/f.{2}/
,但foo
,fey
,{{1} }},fir
,fox
等。
答案 1 :(得分:2)
使用preg_replace()!
您可以通过这种方式删除特定字符
$foo = preg_replace('/[yourcharacters]/', '', $foo);
你也可以通过添加^(参见Regex-Tables)来反过来(删除除了确定的字符以外的所有字符)。
$foo = preg_replace('/[^theonlyallowedcharacters]/', '', $foo);
答案 2 :(得分:0)
我认为您需要为正则表达式添加\ <特殊字符。
请替换为此代码,
['',\(,\),\/,\|,\*,-,\#,\\]
而不是你的,
[' ',-,\(,\),/,|,\*,-,\#,\]
我希望它可能会有所帮助。