PHP preg_replace

时间:2014-08-29 06:06:48

标签: php html regex

我坚持这个......

我将一些数据插入到来自表单的数据库表中。有时,这个数据包含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);,但没有用。

非常感谢任何帮助!谢谢:))

2 个答案:

答案 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获得应用。

参考:http://in3.php.net/manual/en/function.strip-tags.php