我正在运行XPath请求并尝试构建一个数组,但由于它是一个XPath请求,因此某些值只包含
或只包含一个空格。
我做了一些研究,但我找到的解决方案都没有帮助。
foreach ($dataArray as $value) {
if (strpos($value, 'string A') !== false ||
strpos($value, 'string B — ') !== false ||
trim($value[1]) == ' ' ||
strlen($value) < 2 ||
ctype_space($value)) {
continue;
} else {
$dataArray2[] = $value;
}
}
echo '<pre>';
print_r($dataArray2);
echo '</pre>';
结果:
[0] => string C
[1] => string C
[2] => string C
[3] => // This is created even though it should not get into the array.
[4] => string C
[5] => string C
[6] => string C
[7] => string C
[8] => string C
[9] => string C
[10] => string C
编辑:
尝试了empty(trim($value[1])
并且它无效,所以我决定检查$value[1]
到底是什么,并使用var_dump($value[1]);
。
结果:
string(1) "�"
我不确定它是否应该这样,但�
对我发出警报。
答案 0 :(得分:0)
尝试使用empty()函数
来捕获$ value [1]答案 1 :(得分:0)
可能这个解决方案可以帮到你:
foreach ($dataArray as $value) {
$trimmed = trim($value);
if (!empty($trimmed)) {
$dataArray2[] = $value;
}
}
echo '<pre>';
print_r($dataArray2);
echo '</pre>';
答案 2 :(得分:0)
已修复,将if (strlen($value) > 2)
添加到我的else语句中,因此最终代码现在如下所示:
foreach ($dataArray as $value) {
if (strpos($value, 'string A') !== false ||
strpos($value, 'string B — ') !== false ||
trim($value[1]) == ' ' ||
strlen($value) < 2 ||
ctype_space($value)) {
continue;
} elseif (strlen($value) > 2) {
$dataArray2[] = $value;
}
}
echo '<pre>';
var_dump($dataArray2);
echo '</pre>';
正如@JRsz的评论所示。
另外,我已将print_r
更改为var_dump
,只是为了检查空白值有多少空格。这是一个很好的举动,因为事实证明字符串长度是2
,这就是我提出> 2
的方式。
不确定这是否是最好的方法,但它有效。