Home  >  Article  >  Backend Development  >  Problem with replacing newline characters with

in php

Problem with replacing newline characters with

in php

WBOY
WBOYOriginal
2016-08-18 09:16:332273browse

<p>用nl2br处理了从数据库里取的数据,不想使用<br>换行,想使用<p>分段。<br>网上找到的方法:

<code>$content = '<p>'.str_replace("<br />","</p><p>",$content).'</p>';
</code>
<p>但是我的数据里还有别的一些标签,转换的时候就会有问题。<br>比如我有这样一段数据:

<code>blahblah<br />
<pre class="brush:php;toolbar:false"><code><br />
blahblah<br />
blahblah<br />
</code>
<p>就会变成

<code><p>blahblah</p><p>
<pre class="brush:php;toolbar:false"><code></p><p>
blahblah</p><p>
</code>

<p>这样我的<pre class="brush:php;toolbar:false">&lt;code&gt;&lt;/code&gt;</pre>代码块就被隔断了。<br>有没有什么办法不替换<pre class="brush:php;toolbar:false">&lt;code&gt;&lt;/code&gt;</pre>里的换行?

回复内容:

<p>用nl2br处理了从数据库里取的数据,不想使用<br>换行,想使用<p>分段。<br>网上找到的方法:

<code>$content = '<p>'.str_replace("<br />","</p><p>",$content).'</p>';
</code>
<p>但是我的数据里还有别的一些标签,转换的时候就会有问题。<br>比如我有这样一段数据:

<code>blahblah<br />
<pre class="brush:php;toolbar:false"><code><br />
blahblah<br />
blahblah<br />
</code>
<p>就会变成

<code><p>blahblah</p><p>
<pre class="brush:php;toolbar:false"><code></p><p>
blahblah</p><p>
</code>

<p>这样我的<pre class="brush:php;toolbar:false">&lt;code&gt;&lt;/code&gt;</pre>代码块就被隔断了。<br>有没有什么办法不替换<pre class="brush:php;toolbar:false">&lt;code&gt;&lt;/code&gt;</pre>里的换行?

<code class="php">echo preg_replace('#([a-zA-Z]*)<br\s*\/>#', "<p>$1</p>", "blahblah<br />
<pre class="brush:php;toolbar:false"><code><br />
blahblah<br />
blahblah<br />
</code>
");

<p>p和br都是标签,没有什么转换的必要,你想要<p>的效果也就是为了好看点,所以直接用css就行了,别折腾PHP了。例如

<code>p br {margin-bottom: 1em;}
p pre br {margin-bottom: 0;}</code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn