pHp函数 - 从字符串中删除所有换行符和html实体?

时间:2014-07-21 20:22:15

标签: php html

我从数据库中获得了最初使用HTML标签编写的描述:

• Description bullet blah blah
<br /> &#149; Description bullet blah blah
<br /> &#149; Description bullet blah blah

在不久的将来,我将从数据库描述中剥离所有HTML并使用javascript来呈现格式。与此同时,我需要一个简单的功能来剥离所有的断裂和子弹。

我有这个照顾休息时间:

str_replace('<br />', ' ', $row_rsDetails['Description'])

但是,如果不破坏功能,就无法弄清楚如何在不破坏功能的情况下移除六角子弹。我搜索过,也许我错过了答案。有人可以帮忙吗?感谢。

4 个答案:

答案 0 :(得分:3)

您可以在array中使用str_replace

$result = str_replace(array('<br />', '&#149;'), ' ', $row_rsDetails['Description']);

答案 1 :(得分:0)

另一个选项(类似于@ AbraCadaver&#39; s)是在新行上写出每个str_replace

$string = '&#149; Description bullet blah blah
<br /> &#149; Description bullet blah blah
<br /> &#149; Description bullet blah blah';

$string = str_replace('<br />', ' ', $string);
$string = str_replace('&#149;', ' ', $string);


echo $string;

答案 2 :(得分:0)

您可以使用正则表达式删除这些html实体:

<?php
    $string = '&#149; Description bullet blah blah
    <br /> &#149; Description bullet blah blah
    <br /> &#149; Description bullet blah blah';
    $pattern = '/&#\d+;/i';
    $replacement = '';
    echo preg_replace($pattern, $replacement, $string);
?>

希望它可以帮到你

答案 3 :(得分:0)

对待所有十六进制字符可能更好的方法是考虑rawurldecode

$result = rawurldecode( $string );

这会将所有十六进制转义字符串解码为其原始字符。

另外,关于<br />代码,您是否考虑过使用

$s2 = preg_replace('<br[^>]*/?>', ' ', $original);
$s3 = preg_replace('</br>', ' ', $s2); // if br tag with explicit closing tag

同样适用于<p>代码。 这两个正则表达式都不是真正符合HTML的(例如,它们不能正确匹配<br class="fo>o"/>)。关于在StackOverflow上的regexp中匹配HTML标记,已经有很多信息。如果您的XML输入是硬编码的,那么可能值得考虑。 有关更多信息,请参阅http://de2.php.net/manual/en/function.preg-replace.php

当然你也可以在preg_replace中拥有数组,就像在str_replace中使用一样。