我正在尝试理解preg_replace()函数,但它对我来说看起来很神秘。从查看函数here的文档。我知道它包含三个方面 - 主题,匹配模式以及替换它的内容。
我目前正试图通过替换不是数字的任何东西来“消毒”数字输入。到目前为止,我知道我需要允许数字0-9,但删除任何不是数字的内容并将其替换为:“”。
除了逃避我需要的每一个角色,还有一些方法可以简单地不允许任何其他角色而不是数字0-9吗?此外,如果有人能够阐明“匹配模式”部分如何运作......
答案 0 :(得分:2)
如果要清理字符串以替换不是数字的任何内容,您可以编写一个匹配不在列表中的字符的正则表达式。
模式[0-9]
将匹配所有数字。在集合的开头放置插入符号(^
)会匹配集合中不是的所有内容:[^0-9]
$result = preg_replace('/[^0-9]/', '', $input);
请注意,这也会过滤掉句点/小数点和其他数学标记。您可以通过允许周期来包括句点/小数点(允许浮点数):
$result = preg_replace('/[^0-9.]/', '', $input);
请注意,句点(.
)是正则表达式中的通配符。它不需要在括号表达式中进行转义,但它可以在模式的其他位置进行转义。
答案 1 :(得分:1)
preg_replace()
比你想象的容易:
$p = "/[A-Z a-z]/";
$r = "";
$s = "12345t7890";
echo preg_replace($p, $r, $s);
将输出" 123457890" - 请注意不要' 6'
答案 2 :(得分:0)
is_numeric();
无法解决您的问题?