Reputation: 183
I'm stuck with this one...
I insert some data into a database table which comes from a form. Sometimes, this data contains html, so I do
$note = htmlentities(mysqli_real_escape_string($this->db, $_POST['note']));
I then store the $note in my database. When retrieving my notes, I check whether there is html code in it, and if there is, I want to have it highlighted using highlight_string()
. That part works like a charm. Now here's the problem:
I am displaying the highlighted string in a div container, but it's overflowing because the white spaces are being converted to
. I'm trying to remove those non-breaking spaces and replace them with a simple space so the highlighted string will be contained in the div.
I have tried this so far:
$note = html_entity_decode($note);
$note = highlight_string($note);
$note = preg_replace('/ /', '', $note);
I have also tried $note = str_replace(' ', ' ', $note);
, to no avail.
Any help is very much appreciated! Thanks :)
Upvotes: 0
Views: 3856
Reputation: 2943
You can try with strip_tags in place of htmlentities
string strip_tags( string $str [, string $allowable_tags ] )
In allowable_tags, you can define the html you want to allow in string. If null it will not allow any html to get apply.
Reference : https://www.php.net/manual/en/function.strip-tags.php
Upvotes: 0
Reputation: 2180
I think the problem is quite simply that highlight_string()
is outputting its result immediately, rather than saving it to $note
.
Instead, please try the following:
$note = html_entity_decode($note);
$note = highlight_string($note, true);
$note = str_replace(' ', ' ', $note);
The difference in my code is that I use highlight_string($note, true)
with the second parameter set to true. The docs shed some light about the function's behavior:
mixed highlight_string ( string $str [, bool $return = false ] )
Return
Set this parameter to TRUE to make this function return the highlighted code.
The regex function you have in your code block might work, but since this is a simple replacement, it will suffice to use str_replace
in this case, as you have tried.
Upvotes: 2