【问题标题】:php replace paragraph to newlinephp将段落替换为换行符
【发布时间】:2014-10-30 09:12:32
【问题描述】:

如何将<p>hello</p> <p>world</p> 替换为hello<br />world <br />

我尝试在堆栈上搜索,但没有匹配的结果。

【问题讨论】:

  • 没有匹配的结果?只是谷歌替换字符串 php。没有任何尝试?
  • @Ghost 不要使用正则表达式和字符串替换来处理 HTML
  • @AleksG 很好。然后使用 HTML 解析器
  • 请问您为什么要这样做?
  • 实际上我想从字符串中去除 html 标签并仍然保留包含 br 和 p 标签的新行,然后用 \n 替换 br,但我不能用 \n 替换 p 标签

标签: php newline paragraph


【解决方案1】:

您可以使用 str_replace() 函数来做到这一点。

例如:

$string = "<p>hello</p> <p>world</p>";
$string = str_replace('<p>', '', $string);
$string = str_replace('</p>', '<br />' , $string);

【讨论】:

  • 不行,把第一个和最后一个

    也去掉。打破猫头鹰段落
【解决方案2】:

我自己尝试一下,得到了我期望的结果

$pattern = '/<p>(\w+)\<\/p>/';
$subject = '<p>hello</p><p>world</p>';
$replacement = '${1}<br/>';
$out = preg_replace($pattern, $replacement, $subject);

我只是想知道哪个是更好的正则表达式或 str_replace

我写了一个更好的解决方案,希望大家可以看到它有帮助,也许可以改进它

$pattern = '/<p(.*?)>((.*?)+)\<\/p>/';
$replacement = '${2}<br/>';
$subject = 'html string';
$out = preg_replace($pattern, $replacement, $subject);

【讨论】:

    【解决方案3】:

    使用它来防止破坏第一个和最后一个&lt;p&gt;&lt;/p&gt;

    $string = str_replace($string, '</p><p>', '');
    

    但是如果标签之间有空格,它就不起作用了。

    【讨论】:

      【解决方案4】:
      <?php
      $str = '<p>hello</p> <p>world</p>';
      $replaceArr = array('<p>', '</p>', '</p> <p>');
      $replacementArr = array('', '', '<br />');
      $str = str_replace($replaceArr, $replacementArr, $str);
      echo $str;
      ?>
      

      试试上面的代码。

      【讨论】:

        猜你喜欢
        • 2013-03-03
        • 1970-01-01
        • 2012-06-18
        • 2017-09-27
        • 1970-01-01
        • 2011-03-09
        • 2011-01-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多