PHP explode()内置函数无法正常工作

时间:2014-10-04 07:36:43

标签: php

我尝试使用PHP explod()内置函数来浏览存储在mysql数据库中的文本数据 这是我尝试过的PHP代码示例:

// Get mysql database data(with \n).
$str_in = 
'one
two
three

fore
five

six
';

// Convert \n into <br>.
$str = nl2br($str_in);

// Explode $str and wrapped into <p> tags.
$str_exploded = explode("<br><br>",$str);

foreach($str_exploded as $sub_str) {

    echo '<p>'.$sub_str.'</p>';

}

然后我得到了这个输出。

<p>one<br>
two<br>
three<br>
<br>
fore<br>
five<br>
<br>
six<br>
</p>

但这不是我所期待的。我想要这样的事情。

<p>one<br>
two<br>
three</p>

<p>fore<br>
five</p>

<p>six</p>

我怎么能做到这一点?感谢。

2 个答案:

答案 0 :(得分:0)

您错误地假定,nl2br函数用<br>替换“\ n”。实际上,它会在<br />之前插入\n。因此,\n\n变为<br />\n<br />\n。你的

explode("<br><br>",$str)

无法按预期工作。

为了解决这个问题,我使用\n\n爆炸:

代码

<?php
$str_in =
'one
two
three

fore
five

six
';

$str_exploded = preg_split("/(:?\r?\n){2}/",$str_in);

$n = count($str_exploded);
for ($i = 0; $i < $n; ++$i)
{
    // Convert \n into <br>.
    $str_exploded[$i] = nl2br($str_exploded[$i]);
    echo '<p>'.$str_exploded[$i]."</p>";
    if ($i !== $n - 1)
    {
        print "\n\n";
    }
}

输出

<p>one<br />
two<br />
three</p>

<p>fore<br />
five</p>

<p>six<br />
</p>

答案 1 :(得分:0)

你要做的就是删除一个当它唯一的东西。

Strreplace应该使用参数&#34; \ n
&#34;并取代&#34; \ n&#34;