【发布时间】:2014-02-25 13:06:09
【问题描述】:
我认为这段代码在最后放置了一个空行。如果是真的,如何避免呢?
$text = explode( "\n", $text );
foreach( $text as $str ) { echo $str; }
【问题讨论】:
-
在爆炸之前修剪文本?
$text = trim($text, "\n");
我认为这段代码在最后放置了一个空行。如果是真的,如何避免呢?
$text = explode( "\n", $text );
foreach( $text as $str ) { echo $str; }
【问题讨论】:
$text = trim($text, "\n");
您可以使用带有标志PREG_SPLIT_NO_EMPTY 的preg_split 来代替explode
示例:
$aLines = preg_split('/\n/', $sText, -1, PREG_SPLIT_NO_EMPTY);
但请注意 preg_split is slower 比 explode。
【讨论】:
第一种方法是在分解字符串之前给你trim()函数。
$text = trim($text, "\n");
$text = explode( "\n", $text );
foreach( $text as $str ) { echo $str; }
另一种方法是在爆炸后使用array_filter()。
$text = explode( "\n", $text );
$text = array_filter($text);
foreach( $text as $str ) { echo $str; }
默认array_filter()会移除等于false的元素,因此不需要将回调定义为第二个参数。
无论如何,我认为第一种方式是最好的。
【讨论】:
在爆炸之前修剪文本。
$text = trim($text, "\n");
$text = explode( "\n", $text );
foreach($text as $str) {
echo $str;
}
【讨论】: