如何从字符串中删除<br />标签和更多?

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

http://www.php.net/strip_tags

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>');

?>

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