目前我有:
//replace common characters
$search = array('&', '£', '$');
$replace = array('&', '£', '$');
$html= str_replace($search, $replace, $html);这段代码的问题是,如果已经转换了&,它将尝试再次转换它。我如何才能确保这种情况不会发生?
发布于 2012-01-04 19:25:57
我给出了一个例子,但如果你有像' & '这样的后者,那么希望它能为你工作:
$str = 'India & Aust & New ';
$regex = '/(\s\&\s)/i';
$replace = ' & ';
if(preg_match($regex, $str)){
$new_str = preg_replace($regex, $replace, $str );
echo '<pre>';
echo htmlspecialchars($new_str, ENT_QUOTES);
echo '</pre>';
}
else{
echo 'Not matched!';
}但请记住,如果你在一个“和”符号的两边都有空格,或者你想要的任何东西,这将会起作用。否则,请遵循@Treffynnon回答..
发布于 2012-01-04 18:55:13
我会使用PHP的内置函数来转义HTML字符:
htmlentities()htmlspecialchars()而不是滚动我自己的,因为这要容易得多。htmlentities()和htmlspecialchars()使用double_encode参数显式处理此问题:
当double_encode关闭时,PHP将不会对现有的html实体进行编码。缺省设置是转换所有内容。
https://stackoverflow.com/questions/8725594
复制相似问题