以下PHP程序替换符号!£$%^& with nulls
<?php
$string = "This is some text and numbers 12345 and symbols !£$%^&";
$new_string = ereg_replace("[^A-Za-z0-9 (),.]", "", $string);
echo "Old string is: ".$string."<br />New string is: ".$new_string;
?>
输出:
旧字符串是:这是一些文字和数字12345和符号!£$%^&amp;
新字符串是:这是一些文本和数字12345和符号
但是,我已经了解到函数ereg_replace()已被弃用,我应该使用函数preg_replace()代替。我做了这样的替换:
<?php
$string = "This is some text and numbers 12345 and symbols !£$%^&";
$new_string = preg_replace("[^A-Za-z0-9 (),.]", "", $string);
echo "Old string is: ".$string."<br />New string is: ".$new_string;
?>
但输出错误:
旧字符串是:这是一些文字和数字12345和符号!£$%^&amp; 新字符串是:这是一些文本和数字12345和符号!£$%^&amp;
我做错了什么?我该如何解决?
答案 0 :(得分:4)
您似乎缺少正则表达式周围的标记。试试这个(注意图案周围的斜线)。
$string = "This is some text and numbers 12345 and symbols !$%^&";
$new_string = preg_replace("/[^A-Za-z0-9 (),.]/", "", $string);
echo "Old string is: ".$string."<br />New string is: ".$new_string;
只要在两侧都找到相同的标记,就可以使用任何字符作为标记。如果您的模式匹配/
个字符,则非常有用。所以这也是有效的:
$string = "This is some text and numbers 12345 and symbols !$%^&";
$new_string = preg_replace("~[^A-Za-z0-9 (),.]~", "", $string);
echo "Old string is: ".$string."<br />New string is: ".$new_string;
答案 1 :(得分:-2)
这也是我经历过的一个奇怪的错误。由于某种原因,空引号搞砸了这个功能,但我通过使用
让它工作preg_replace($pattern, NULL, $string);
而不是
preg_replace($pattern, "", $string);