繁体   English   中英

使用preg_replace()?

[英]Using preg_replace()?

我正在尝试理解preg_replace()函数,但它对我来说看起来很神秘。 这里查看有关函数的文档。 我知道它由三件事组成 - 主题,匹配模式以及替换它的内容。

我目前正试图通过替换不是数字的任何东西来“消毒”数字输入。 到目前为止,我知道我需要允许数字0-9,但删除任何不是数字的内容并将其替换为:“”。

而不是逃避我需要的每一个角色,是否有一些方法可以简单地不允许任何其他字符而不是数字0-9? 此外,如果有人能够阐明“匹配模式”部分如何运作......

如果要清理字符串以替换不是数字的任何内容,您可以编写一个匹配不在列表中的字符的正则表达式。

模式[0-9]将匹配所有数字。 放置一个插入符号( ^在设定的开始)相匹配的一切, 是不是在集: [^0-9]

$result = preg_replace('/[^0-9]/', '', $input);

请注意,这也将过滤掉句点/小数点和其他数学标记。 您可以通过允许周期来包括句点/小数点(允许浮点数):

$result = preg_replace('/[^0-9.]/', '', $input);

请注意,句点( . )是正则表达式中的通配符。 它不需要在括号表达式中进行转义,但它可以在模式的其他位置进行转义。

preg_replace()比你想象的容易:

$p = "/[A-Z a-z]/";
$r = "";
$s = "12345t7890";

echo preg_replace($p, $r, $s);

输出“123457890” - 注意没有'6'

is_numeric(); 是不是解决了你的问题?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM