我正在使用preg_match_all从线程中提取电话号码。这将它们放入一个数组中,我将rsort和array_unique同时应用于matches变量,但是它们没有任何效果...... array_unique将消除仅来自引用或响应副本的匹配,并且rsort应该使最后一个索引是第一个索引,倒数第二个索引,第二个索引等等......
preg_match_all('~0-9]{3}-[0-9]{3}-[0-9]{4}~', $data, $matches)
$result = array_unique($matches);
rsort($result);
var_dump($result);
输出:
array
0 =>
array
0 => string '111-111-1111' (length=12)
1 => string '222-222-2222' (length=12)
2 => string '333-333-3333' (length=12)
3 => string '444-444-4444' (length=12)
4 => string '555-555-5555' (length=12)
5 => string '555-555-5555' (length=12)
6 => string '555-555-5555' (length=12)
需要:
array
0 =>
array
0 => string '555-555-5555' (length=12)
1 => string '444-444-4444' (length=12)
2 => string '333-333-3333' (length=12)
3 => string '222-222-2222' (length=12)
4 => string '111-111-1111' (length=12)
答案 0 :(得分:1)
我认为你需要匹配数组中的第一个元素。
preg_match_all('~0-9]{3}-[0-9]{3}-[0-9]{4}~', $data, $matches)
$aList = $matches[0];
$result = array_unique($aList);
rsort($result);
var_dump($result);
答案 1 :(得分:1)
preg_match_all给出了一个二维数组。你需要拥有$ matches的第一个元素。用unique和rsort进一步处理它。