Php 空字符串的问题。空()不工作
我正在创建一个表单来创建Word文档。有一个部分,用户将创建一个列表,并使用“|”(垂直条)作为一个delimeter来分隔列表行。我正在尝试分解()像这样的字符串:“第一行|第二行|第三行和最后一行|”。正如你们所看到的,我在最后一行后面放了一个垂直条分隔符,这是因为用户可能会犯这个错误,它会在列表中生成一个空行。 我试图通过使用类似以下内容来避免此错误:Php 空字符串的问题。空()不工作,php,laravel,Php,Laravel,我正在创建一个表单来创建Word文档。有一个部分,用户将创建一个列表,并使用“|”(垂直条)作为一个delimeter来分隔列表行。我正在尝试分解()像这样的字符串:“第一行|第二行|第三行和最后一行|”。正如你们所看到的,我在最后一行后面放了一个垂直条分隔符,这是因为用户可能会犯这个错误,它会在列表中生成一个空行。 我试图通过使用类似以下内容来避免此错误: $lines = explode("|",$lines); for($a=0;$a<count($lines);$a++) {
$lines = explode("|",$lines);
for($a=0;$a<count($lines);$a++)
{
if(!empty($lines[$a]) or !ctype_space($lines[$a]))
{
//generate the line inside de Word Doc
}
}
$lines=分解(“|”,$lines);
对于($a=0;$a您可能希望使用PHP的&&
(and)而不是或
有关参考,请参阅
如果empty()
和ctype\u space()
都返回false,您只想输出该行。对于当前代码,空字符串将通过if
测试,因为ctype\u space()
返回false,即使empty()
不返回false。完全由空格组成的字符串也将通过,因为empty()
返回false,即使ctype\u space()
不返回false
要更正逻辑,请执行以下操作:
if(!empty($lines[$a]) && !ctype_space($lines[$a])) { ... }
或者,我建议在选中empty()
之前从字符串中删除空白:
$lines=分解(“|”,$lines);
如果(!空($line)){
foreach($line作为$line){
如果(!空(修剪($line)){
//输出该行
}
}
}
另外,请参见。或者,在迭代之前,使用带有trim回调的array_filter删除空元素或包含空格的元素
<?php
$string = '|foo|bar|baz|bat|';
$split = explode('|', $string);
$split = array_filter($split, 'trim');
var_export($split);
但是,您可能不想删除一些空值
首先,您可以修剪管道:
<?php
$string = '|foo|bar|baz|bat|';
$string = trim($string, '|');
$split = explode('|', $string);
var_export($split);
很漂亮。带有回调是一段非常有用的代码。来自@Progrock的代码更加流畅;)
<?php
$string = '|foo|bar|baz|bat|';
$string = trim($string, '|');
$split = explode('|', $string);
var_export($split);