2

这是我的功能:

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

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

我该怎么做explode('. ',$desc),并在它们所在的位置留下点?

4

3 回答 3

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()除非您不喜欢真正随机的结果。

于 2013-08-06T10:53:40.403 回答
0

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

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

dot在后面带有 a 的任何非字符处拆分。

于 2013-08-06T10:52:52.403 回答
0

试试这个代码..

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

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

                $out .= $value;
                $rand = rand(0, 4);
                if ($rand == 2) {
                   $out .= "<br>";
                } else {
                   $out .= ' ';
                }
            }
于 2013-08-06T11:09:30.537 回答