PHP代码删除除数字之外的所有内容

jef*_*kee 125 php regex string

我试图从字符串中删除所有内容,但只是数字(0-9).

我以为这会起作用..

echo preg_replace("[^0-9]","",'604-619-5135');
Run Code Online (Sandbox Code Playgroud)

但它回声"604-619-5135".我错过了什么?

Chr*_*rle 252

试试这个:

preg_replace('/[^0-9]/', '', '604-619-5135');
Run Code Online (Sandbox Code Playgroud)

preg_replace使用PCRE,通常以a开头和结尾/.

  • @Qtax:好点,是的,我知道我们从("g/re/p")得到"grep"这个词的地方 (6认同)

Nav*_*ker 93

这是为未来的开发人员,你也可以试试这个.也很简单

echo preg_replace('/\D/', '', '604-619-5135');
Run Code Online (Sandbox Code Playgroud)

  • 您好,我是未来的开发人员.这确实很好地满足了我们的需求.谢谢. (27认同)
  • 我是来自遥远未来的最后一位开发者。我很遗憾地说,这已经没有任何用处了。你们不应该用这么多塑料吸管,相信我,当你到达这里时你就会看到......如果你做到了。 (9认同)
  • 仅供参考:我们在 39 世纪仍然使用这个。 (5认同)
  • 我已经回来了 2 未来,我可以确认他们仍然没有找到更好的方法。 (4认同)
  • 另一位来自未来的开发商。2020 年出现了一些问题,但这个答案仍然有帮助。 (4认同)
  • 我比Zesda将来的人还远,可以确认,这仍然是一个帮助 (3认同)
  • 你好,我距离这个答案已经 6 年了,但它仍然有帮助!您先生值得一枚奖章! (3认同)
  • @Eoin 为了让这个模式“更好”,在 `D` 之后添加一个或多个量词 (`+`)。这使得正则表达式引擎可以进行更长的替换,从而减少替换次数。想象一下站在一盒鸡蛋前面。如果我让你拿起那打鸡蛋,你会做 12 个深蹲还是只做 1 个?虽然我喜欢锻炼,但为了直接起见,我会蹲下一次,捡起所有的鸡蛋。 (3认同)
  • 如果数字在开始时有+,则不起作用 (2认同)
  • 我来自过去。什么是开发商? (2认同)
  • 公元 2674 年,我独自一人在我位于 MarsBase #8 的 Subterra 住所中,正在搜索最便宜的堕胎诊所,结果出现了 Preg Replace™ 的结果。感谢 Elon XVII (2认同)

SBe*_*413 11

您需要将模式包含在分隔符中 - 通常使用斜杠(/).试试这个:

echo preg_replace("/[^0-9]/","",'604-619-5135');
Run Code Online (Sandbox Code Playgroud)

  • [分隔符可以是任何非字母数字、非反斜杠、非空白字符。](http://php.net/manual/en/regexp.reference.delimiters.php) (2认同)

Alp*_*nel 5

对于那些不想使用正则表达式的人来说,这是一种更实用的方法:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);
Run Code Online (Sandbox Code Playgroud)

注意:它也适用于电话号码。

  • “FILTER_SANITIZE_NUMBER_INT”留下加号“+”和减号“-”,而不仅仅是数字。 (3认同)