爆炸并留下分隔符

时间:2013-08-06 10:47:37

标签: php

这是我的功能:

$words = explode('. ',$desc);
        $out = '';
        foreach ($words as $key => $value) {
            $out .= $value;
            $rand = rand(0, 4);
            if ($rand == 2) {
                $out .= "\n";
            } else {
                $out .= ' ';
            }
        }

简而言之,它是在随机点之后插入新行,但在这种情况下会删除点。

我怎样才能explode('. ',$desc),并在它们所在的位置留点?

3 个答案:

答案 0 :(得分:1)

当你连接时,请把它们放回去。

$words = explode('. ',$desc);
$out = '';
foreach ($words as $key => $value) {
    $out .= $value.'.';
    $rand = mt_rand(0, 4);
    if ($rand == 2) {
        $out .= "\n";
    } else {
        $out .= ' ';
    }
}

你也应该使用mt_rand(),它是rand()的更好版本,除非你喜欢不是真正的随机结果。

答案 1 :(得分:0)

没有正则表达式主题的正面看法。

$words = preg_split('/(?<=\.)(?!\s*$)/', $desc);

以任何非{A>}后面的dot分割。

答案 2 :(得分:0)

试试这段代码..

$words = explode('. ',$desc);

            $out = '';
            foreach ($words as $key => $value) {

                $out .= $value;
                $rand = rand(0, 4);
                if ($rand == 2) {
                   $out .= "<br>";
                } else {
                   $out .= ' ';
                }
            }