我需要用HTML编码替换字符串中的字符。
实施例。 “快速”的棕色狐狸跳过懒惰的狗(狗)。
我需要用&替换引号。 QUOT;并用&更换支架#40;和& #41;
我尝试过str_replace,但我只能替换1个字符。有没有办法用str_replace替换多个字符?或者有更好的方法吗?
谢谢!
答案 0 :(得分:4)
我建议使用函数htmlentities()
。
查看Manual。
答案 1 :(得分:4)
PHP有许多功能来处理这类事情:
首先,htmlentities()
和htmlspecialchars()
。
但正如您已经发现的那样,他们不会处理(
和)
个字符,因为这些字符不是需要在HTML中呈现为实体的字符。我想问题是为什么要将这些特定字符转换为实体?我真的没有理由这样做。
如果您确实需要这样做,str_replace()
将在搜索和替换参数中使用数组执行多个字符串替换:
$output = str_replace(array('(',')'), array('(',')'), $input);
您也可以以类似的方式使用strtr()
功能:
$conversions = array('('=>'(', ')'=>')');
$output = strtr($conversions, $input);
这些都可以帮到你。同样,我不知道你为什么要这样做,因为在这种情况下(
和)
括号没什么特别的。
在您查看上述内容时,您可能还想查找get_html_translation_table()
,它会返回htmlentities()
或htmlspecialchars()
中使用的实体转化数组,格式为适合与strtr()
一起使用。您可以加载该数组并在运行转换之前向其添加额外的字符;这将允许您转换所有正常的实体字符以及同一时间。
我想指出,如果您使用UTF8字符集提供页面,则无需将任何字符转换为实体(HTML保留字符<
,>
和{除外) {1}})。这可能是您的替代解决方案。
您还在单独的评论中询问了有关转换换行符的问题。这些可以使用PHP的nl2br()
函数进行转换,但也可以使用&
或str_replace()
进行转换,因此可以使用其他所有内容添加到转换数组中。