【问题标题】:remove empty lines and convert into single space php删除空行并转换为单个空格 php
【发布时间】:2016-11-30 08:20:12
【问题描述】:

我在mysql表中有一个数据:

<p>aaaa</p>
<p>&nbsp;</p>
<p>asd</p>

我需要这样显示:

aaaa asd

但我似乎无法正确理解。

首先我使用这个代码:

$string = htmlspecialchars_decode(stripslashes($string)); // $string contains data from the table

我试过这个:(from here)

$string = trim(preg_replace('/\s+/', ' ', $string));

还有这个:(from here)

$string = str_replace(array("\n", "\r"), '', $string);

但没有任何效果! 当我使用echo $string; 时,它仍然显示一个空行。谁能给出解决方案?

【问题讨论】:

  • @Ravenix 你是什么意思?我认为 \s+ 的意思是“一个或多个新行”?
  • 您是否尝试将 p {display: inline-block;} 添加到您的 css 中?
  • 您想保留&lt;p&gt; 标签吗?这些导致换行符。
  • @DevNiels 是的,我只是在你建议之后尝试过,但结果还是一样..
  • @simon 不,我不想要任何空行。所有空行都应该用一个空格替换

标签: php codeigniter


【解决方案1】:

试试这个

$x = '<p>aaaa</p>
<p>&nbsp;</p>
<p>asd</p>';
$spaces = array('&nbsp;',' ');
echo str_replace($spaces,'',strip_tags($x));

【讨论】:

  • 这应该可以完美运行,但它返回多个空格。即使第二个参数是空字符串。这是为什么呢?
【解决方案2】:

可以找到答案here。 或者试试: $line_out = preg_replace('/[\n\r]+/', '', $line_in);

【讨论】:

  • 这个有效。谢谢!我已经在谷歌上搜索了将近一个小时,但我不记得看到过那个答案……很奇怪……
【解决方案3】:

换行是由&lt;p&gt;标签引起的,因为它们是block-level elements

浏览器通常会在元素之前和之后使用换行符显示块级元素。

如果您不想在字符串中包含 HTML 标签,您可以使用以下命令删除它们 strip_tags()

$string = strip_tags($string); 

如果你想保留&lt;p&gt;标签,你需要使用CSS将它们显示为内联元素:

p {
    display: inline; /* or display: inline-block; */
}

【讨论】:

  • 这是否意味着我不需要使用 htmlspecialchars_decode 或其他东西来显示数据库中的数据?我认为 strip_tags() 不够安全?
  • @dapidmini 取决于数据的来源。如果此数据是用户输入,您需要在其上使用htmlspecialchars()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 2018-06-14
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 2014-10-31
相关资源
最近更新 更多