用HTML编码替换字符串中的字符

时间:2011-03-04 14:00:21

标签: php html str-replace

我需要用HTML编码替换字符串中的字符。

实施例。 “快速”的棕色狐狸跳过懒惰的狗(狗)。

我需要用&替换引号。 QUOT;并用&更换支架#40;和& #41;

我尝试过str_replace,但我只能替换1个字符。有没有办法用str_replace替换多个字符?或者有更好的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

我建议使用函数htmlentities()

查看Manual

答案 1 :(得分:4)

PHP有许多功能来处理这类事情:

首先,htmlentities()htmlspecialchars()

但正如您已经发现的那样,他们不会处理()个字符,因为这些字符不是需要在HTML中呈现为实体的字符。我想问题是为什么要将这些特定字符转换为实体?我真的没有理由这样做。

如果您确实需要这样做,str_replace()将在搜索和替换参数中使用数组执行多个字符串替换:

$output = str_replace(array('(',')'), array('&#40','&#41'), $input);

您也可以以类似的方式使用strtr()功能:

$conversions = array('('=>'(', ')'=>')');
$output = strtr($conversions, $input);

这些都可以帮到你。同样,我不知道你为什么要这样做,因为在这种情况下()括号没什么特别的。

在您查看上述内容时,您可能还想查找get_html_translation_table(),它会返回htmlentities()htmlspecialchars()中使用的实体转化数组,格式为适合与strtr()一起使用。您可以加载该数组并在运行转换之前向其添加额外的字符;这将允许您转换所有正常的实体字符以及同一时间。

我想指出,如果您使用UTF8字符集提供页面,则无需将任何字符转换为实体(HTML保留字符<>和{除外) {1}})。这可能是您的替代解决方案。

您还在单独的评论中询问了有关转换换行符的问题。这些可以使用PHP的nl2br()函数进行转换,但也可以使用&str_replace()进行转换,因此可以使用其他所有内容添加到转换数组中。