这是我的功能:
$words = explode('. ',$desc);
$out = '';
foreach ($words as $key => $value) {
$out .= $value;
$rand = rand(0, 4);
if ($rand == 2) {
$out .= "\n";
} else {
$out .= ' ';
}
}
简而言之,它是在随机点之后插入新行,但在这种情况下会删除点。
我怎样才能explode('. ',$desc)
,并在它们所在的位置留点?
答案 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 .= ' ';
}
}