如何替换php字符串中的某些文本

时间:2016-06-01 09:17:11

标签: php

我想在插入数据库之前替换php字符串中的<>,因此当用户键入代码时,它不会执行其功能,所以我这样做:< / p>

$comment = str_replace("<", "&lt;", $comment);
$comment = str_replace(">", "&gt;", $comment);

但是我在字符串<3msg中也有类似的内容,我不想替换它。请如何运行我的代码。

5 个答案:

答案 0 :(得分:1)

像这样使用

$comment = str_replace("<", "&#60;", $comment);
$comment = str_replace(">", "&#62;", $comment);
$comment = str_replace("&#60;3msg", "<3msg", $comment);

答案 1 :(得分:0)

如果你在不同的地方有一个角色,你需要更具体,例如总是在这个或其他地方旁边的角色。否则你运气不好,因为你必须准确识别你想要替换的字符。对于场景aboce,有一个名为htmlspecialchars(Link

的函数

如果您想确保没有任何内容干扰您的查询并且不会发生SQL注入攻击,我建议您尽可能多地使用预准备语句。你可以阅读关于这个here的mor,如果这还不够,我可以举例说明。

答案 2 :(得分:0)

如果您要清理数据库输入以删除脚本等,那么您可以使用strip_tags这样:

$comment = strip_tags($comment)

或者,如果您想保留标签但不允许代码注入,那么您也可以使用htmlspecialchars进行更彻底和全面的转换,以确保您不会错过任何内容。

答案 3 :(得分:0)

试试这个:

使用php功能:

htmlspecialchars($comment);

答案 4 :(得分:0)

请参阅Here

您可以使用 htmlentities()来实现输出。

$str = "A 'quote' is <b>and</b>";

// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str);

// Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str, ENT_QUOTES);

<强> PS

要查看结果,请参阅查看源您将看起来像这样。 This