gpt4 book ai didi

php - 转义某些字符不起作用

转载 作者:可可西里 更新时间:2023-11-01 00:40:02 25 4
gpt4 key购买 nike

我确定这是重复的,但我无法通过搜索找到答案。

这是我的代码

str_replace([' ',-,\(,\),\*,-,\|,\/], '', $params['电话']), '0'

那行得通。我想要的是:

str_replace([' ',-,\(,\),/,|,\*,-,\#,\], '', $params['电话']), '0'

只要我添加 #\ 它就会失败,并且转义它们似乎不起作用。有没有其他方法可以避开它们?

虽然它看起来有效,但它似乎并没有取代初始空间。这可能是我问题的根源吗?

最佳答案

你要去掉一个空格,-, (, ), *, - |/ 以及字符串中的 \# 符号。

您需要将这些字符的数组传递给 str_replace :

$arr = [ '-', '(', ')', '*', '-', '|', '/', '\\', '#'];
$result = str_replace($arr, '', $s);

或者,您可以使用带有 preg_replace 的正则表达式像这样:

$res = preg_replace('~[- ()*|/\\\\#]~', '', $s);

参见 PHP demo .

正则表达式详细信息:

  • ~ 是正则表达式分隔符,所有 preg_ 函数都需要
  • - 必须放在字符类的开头/结尾,或者如果放在其他地方则进行转义,以匹配文字 -
  • \ 符号必须与 2 个文字 \ 匹配,这意味着需要 4 个反斜杠来匹配单个文字反斜杠
  • 在字符类中,*()|(和+, ?, ., too) 在那里失去特殊状态,不需要转义
  • 如果您使用 Unicode 字符串,请在最后一个 ~ 正则表达式分隔符之后添加 u 修饰符:'~[- ()*|/\\\\#]~u'.

The difference between string replace and preg replace

str_replace 替换文字字符串的特定出现,例如 foo 将只匹配和替换:foo

preg_replace 将使用正则表达式执行替换,例如 /f.{2}/ 将匹配并替换 foo,但也fey, fir, fox, f12, f )

关于php - 转义某些字符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44821696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com