I need to strip all <br />
and all 'quotes' ("
) and all 'ands' (&
) and replace them with a space only ...
How can I do this? (in PHP)
I have tried this for the <br />
:
$description = preg_replace('<br />', '', $description);
But it returned <>
in place of every <br />
...
Thanks
To manipulate HTML it is generally a good idea to use a DOM aware tool instead of plain text manipulation tools (think for example what will happen if you enounter variants like <br/>
, <br />
with more than one space, or even <br>
or <BR/>
, which altough illegal are sometimes used). See for example here: http://sourceforge.net/projects/simplehtmldom/
You can use str_replace like this:
str_replace("<br/>", " ", $orig );
preg_replace etc uses regular expressions and that may not be what you want.
To remove all permutations of br:
<br> <br /> <br/> <br >
check out the user contributed strip_only()
function in
The "Use the DOM instead of replacing" caveat is always correct, but if the task is really limited to these three characters, this should be o.k.
If str_replace()
isnt working for you, then something else must be wrong, because
$string = 'A string with <br/> & "double quotes".';
$string = str_replace(array('<br/>', '&', '"'), ' ', $string);
echo $string;
outputs
A string with double quotes .
Please provide an example of your input string and what you expect it to look like after filtering.
Try this:
$description = preg_replace('/<br \/>/iU', '', $description);
<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "
";
// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>