我已经看过关于这个类似主题的其他问题,并尝试了这些建议,但它们似乎没有用。
这是我的代码:
<?php
$badChars = array('/</', '/>/', '/$/', '/\\/', '/=/', '/@/', '/\//');
$cleanData = "Text -with /stuff I don@'t want";
echo $cleanData . "\n";
$cleanData = preg_replace($badChars, '', $cleanData);
echo $cleanData . "\n";
?>
请注意,模式数组会因场景而异。这是一个数据清理练习。例如:如果处理电子邮件字段,我们会暂时删除@模式。
这是输出:
Text -with /stuff I don@'t want
PHP Warning: preg_replace(): No ending delimiter '/' found in /home/tim/xm_code/symphony/code/components/controllers/test.php on line 9
Process finished with exit code 0
我找不到任何东西可以帮我解决这个问题。有什么想法吗?
答案 0 :(得分:1)
你的双反斜杠正在逃避你的结算分隔符。所以
'/\\/'
需要
'/\\\/'
或者使用角色类,你不需要数组。第二种方法是使用str_replace
,因为字符都是静态的。
$badChars = array('<', '>', '$', '\\', '=', '@', '/');
$cleanData = "Text -with /stuff I don@'t want";
echo $cleanData . "\n";
$cleanData = str_replace($badChars, '', $cleanData);