我坚持这个......
我将一些数据插入到来自表单的数据库表中。有时,这个数据包含html,所以我做
$note = htmlentities(mysqli_real_escape_string($this->db, $_POST['note']));
然后我将$ note存储在我的数据库中。在检索我的笔记时,我会检查其中是否有html代码,如果有,我希望使用highlight_string()
突出显示它。那部分就像一个魅力。现在问题在于:
我在div容器中显示突出显示的字符串,但由于空格正在转换为
,所以它会溢出。我试图删除那些不间断的空格并用一个简单的空格替换它们,因此突出显示的字符串将包含在div中。
到目前为止我试过这个:
$note = html_entity_decode($note);
$note = highlight_string($note);
$note = preg_replace('/ /', '', $note);
我也试过$note = str_replace(' ', ' ', $note);
,但没有用。
非常感谢任何帮助!谢谢:))
答案 0 :(得分:2)
我认为问题非常简单,highlight_string()
会立即输出结果,而不是将其保存到$note
。
相反,请尝试以下方法:
$note = html_entity_decode($note);
$note = highlight_string($note, true);
$note = str_replace(' ', ' ', $note);
我的代码的不同之处在于我使用highlight_string($note, true)
并将第二个参数设置为true。 docs阐明了函数的行为:
混合highlight_string(字符串$ str [, bool $ return = false ])
<强>返回强>
将此参数设置为TRUE可使此函数返回突出显示的代码。
您的代码块中的正则表达式函数可能有效,但由于这是一个简单的替换,在这种情况下使用str_replace
就足够了,正如您所尝试的那样。
答案 1 :(得分:0)
您可以尝试使用strip_tags代替htmlentities
string strip_tags( string $str [, string $allowable_tags ] )
在allowable_tags中,您可以在字符串中定义要允许的html。如果为null,则不允许任何html获得应用。