【问题标题】:PHP replacing break lines but still show new linePHP替换断线但仍显示新行
【发布时间】:2022-01-30 21:58:59
【问题描述】:

我有一个简单的 HTML 文本,每个部分用 <br><br> 分隔。

*e.g. Lorem ipsum<br><br>
Another lorem ipsum<br><br>
Third section...*

我通过 JSON 将此文本发送到一个 android 应用程序,因此它也使用&lt;br&gt; 标签发送它,因为需要它们来显示应用程序中正确分隔的部分。

问题是,Google 文本语音也在读取那些
标签。

我想摆脱它们,但仍然保留换行符。

我在 PHP 中管理该文本并尝试过:

$txt = preg_replace('<br>', '\r\n', $mytxt);$final = strip_tags($txt);

但这完全删除了换行符,因此最终文本是一体的,并且它还替换了文本中的任何 br 单词,即使我要求替换 &lt;br&gt;,所以是奇怪。

那么我怎样才能保留换行符但去掉 html 标签呢?

【问题讨论】:

  • 改用str_replace('&lt;br&gt;', '\r\n', $mytxt);
  • str_replace('&lt;br&gt;', "\r\n", $mytxt); 使用 " " 作为 \r\n 因为在 ' ' 中的字符串不会转换为换行符。
  • 好吧,这会删除所有的断线,并且文本是一体的。但是这个解决方案至少不会替换 br 词,只有标签,所以它更好但我仍然需要保留部分

标签: php html


【解决方案1】:

你的正则表达式是错误的。试试这个:

/**
* Convert BR tags to nl
*
* @param string The string to convert
* @return string The converted string
*/
function br2nl($string)
{
    return preg_replace('/\<br(\s*)?\/?\>/i', "\n", $string);
}

致谢:此代码 sn-p 来自 php 站点的 cmets。 https://www.php.net/manual/en/function.nl2br.php

【讨论】:

  • hm,这已经在没有
    标签的 json 中显示了一个断行,但是在应用程序中它需要一个 HTML 文本,它会忽略 \n,因为它没有在那里创建任何断行。但也许我需要重新考虑应用程序中的行为,谢谢。
  • 如果您也想删除换行符\n,只需将"\n", 替换为"",。或者只使用strip_tags()
  • 但我需要新行,但不是可见的 HTML 标签,strip_tags 也会删除 HTML 标签,但也会删除新行。但我会在应用程序中修复它,仅将
    替换为文本到语音引擎,因此它会显示带有
    的文本,但会在没有它的情况下读取文本
【解决方案2】:

条形标签可能会对您有所帮助...

<?php

    $mytxt = '*e.g. Lorem ipsum<br><br>
    Another lorem ipsum<br><br>
    Third section...*';

    $final = strip_tags($mytxt);

例如,如果您要在浏览器中回显此内容,则似乎没有换行,但如果您要查看页面的源代码,您会发现换行实际上仍然完好无损。

更多信息:https://www.php.net/manual/en/function.strip-tags.php

【讨论】:

  • 不幸的是,在我的情况下,strip_tags 只是删除了所有的 HTML 标签,没有换行符,所以整个文本是一体的
  • 你原来的问题刚刚提到了
    标签,这就是我建议这个解决方案的原因。如果还有其他标签有问题,那么是的,这不是要走的路。
  • 是的,我的意思是从文本中删除
    标记,但文本仍然显示有断线。那是我的要求。但 strip_tags 不保留断线。
猜你喜欢
  • 2017-05-06
  • 2011-06-02
  • 2012-10-23
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
  • 2014-02-01
  • 1970-01-01
相关资源
最近更新 更多