使用preg_replace()?

时间:2014-09-17 15:04:20

标签: php

我正在尝试理解preg_replace()函数,但它对我来说看起来很神秘。从查看函数here的文档。我知道它包含三个方面 - 主题,匹配模式以及替换它的内容。

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

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

3 个答案:

答案 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();无法解决您的问题?