我有一个字符串数组,其中“columns”被空格分隔:
Array
(
[0] => 911 (info) YES NO D 1236 UNKNOWN
[1] => 910 (no i) YES NO D 1236 NOTE
[2] => 909 (no i) YES NO D 1236 UNKNOWN
[3] => 742 (info) YES NO D 1236 NOTE
[4] => 741/741 (info) YES NO D 1236 NOTE
[5] => 740/740 (info) YES NO D 1236 UNKNOWN
[6] => john (no i) YES NO D 0 NOTE
)
我只想打印最后一行注意的每一行中的第一项, 即
910
742
741 // note that the first token is 741/741 in this case
john
最简单的方法是什么?
答案 0 :(得分:1)
您应该考虑更改阵列格式。在这里,幸运的是,您要打印的“列”位于相同的位置,并至少由一个空格分隔。您可以做的思考I图像是作为字符串位置的NOTE,因为整个值是一个字符串,并且只通过explode()打印第一部分
<?php
$arr = Array
(
0 => '911 (info) YES NO D 1236 UNKNOWN ',
1 => '910 (no i) YES NO D 1236 NOTE',
2 => '909 (no i) YES NO D 1236 UNKNOWN',
3 => '742 (info) YES NO D 1236 NOTE',
4 => '741/741 (info) YES NO D 1236 NOTE',
5 => '740/740 (info) YES NO D 1236 UNKNOWN',
6 => 'john (no i) YES NO D 0 NOTE'
);
foreach ($arr as $val) {
if(strpos($val, 'NOTE')) {
$val = explode(' ', $val);
echo $val[0] . "<br />";
}
}
输出:
910
742
741/741
john
或者,如果您也想使用/
作为分隔符(似乎您在/
和free space
之后不需要任何内容,则可以使用带有preg_split的多个分隔符(正则表达式)
foreach ($arr as $val) {
if(strpos($val, 'NOTE')) {
$val = preg_split("/[\/\ ]+/", $val);
echo $val[0] . "<br />";
}
}
答案 1 :(得分:0)
尝试这样的事情......
<?php
$arr=Array
(
0 => '911 (info) YES NO D 1236 UNKNOWN',
1 => '910 (info) YES NO D 1236 NOTE',
2 => '909 (info) YES NO D 1236 UNKNOWN',
3 => '742 (info) YES NO D 1236 NOTE',
4 => '741/741 (info) YES NO D 1236 NOTE',
5 => '740/740 (info) YES NO D 1236 UNKNOWN',
6 => 'john (info) YES NO D 0 NOTE'
);
$new_arr = array();
function processFunc($v)
{
global $new_arr;
if(strpos($v,'NOTE')!==false)
{
if(strpos($v,'/')!==false)
{
$new_arr[]=explode('/',$v)[0];
}
else
{
$new_arr[]=explode(' ',$v)[0];
}
}
}
$some_arr=array_map('processFunc',$arr);
echo $string=implode('<br>',$new_arr);
输出:
910
742
741
john
答案 2 :(得分:0)
preg_match_all('/^\w+(?=.*NOTE)/m', implode("\n", $array), $matches);
print_r($matches[0]);
正则表达式说明:
/
正则表达式分隔符
^
在行的开头断言位置
\w+
匹配任何字词[a-zA-Z0-9_]
(?=.*NOTE)
肯定前瞻 - 断言下面的正则表达式可以匹配
.*
匹配任何字符(换行符除外)
量词:在零和无限次之间,尽可能多次,根据需要回馈[贪婪]
< / LI> NOTE
字符匹配字符注意(区分大小写)
/
m
修饰符:多行。
^
和$
与每行的开头/结尾相匹配(不仅是字符串的开头/结尾)