目前我有:
//replace common characters
$search = array('&', '£', '$');
$replace = array('&', '£', '$');
$html= str_replace($search, $replace, $html);
此代码的问题在于,如果&已经转换它将尝试再次转换它。我如何确保不会发生这种情况?
答案 0 :(得分:5)
我会使用PHP具有的内置函数来转义HTML字符:
而不是滚动我自己,因为它更容易。 htmlentities()
和htmlspecialchars()
使用double_encode
参数明确处理此问题:
当关闭double_encode时,PHP不会编码现有的html 实体。默认是转换所有内容。
答案 1 :(得分:1)
我给出了一个例子,但是如果你有像' & '
这样的后者,它会起作用,然后希望这对你有用:
$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答案..