有点像PHP和Regex的noobie,我从网络服务收到以下内容:
test:002005@1111@333333@;10205@2000@666666@;002005@1111@55555@;
以上行是3个数字的序列,重复3次。我想获得每个序列的第3个数字,我相信最好的课程(除了3000次爆炸)将是preg_match_all但我在艰难的时间环绕着RegEx。
最终结果应如下所示:
Array
(
[0] => 333333
[1] => 666666
[2] => 55555
)
提前感谢您的帮助。
答案 0 :(得分:5)
if(preg_match_all('/.*?(?:\d+@){2}(\d+)@;/',$s,$m)) {
print_r($m[1]);
}
或
你可以使用explode as:
来做到这一点$input = rtrim($input,';');
$temp1 = explode(';',$input);
foreach($temp1 as $val1) {
$temp2 = explode('@',$val1);
$result[] = $temp2[2];
}
print_r($result);
答案 1 :(得分:2)
使用功能explode()
<?php
$pizza = "piece1@piece2@piece3@piece4@piece5@piece6";
$pieces = explode("@", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
?>
答案 2 :(得分:0)
您可以使用preg_match_all
执行此任务,这使任务变得非常简单:
$a = "test:002005@1111@333333@;10205@2000@666666@;002005@1111@55555@;";
preg_match_all('/@(\d+)@;/', $a, $m);
print_r($m);
$ m [1]包含你想要的输出。
答案 3 :(得分:0)
我不记得这句话到底是怎么回事......
“你有问题并决定使用正则表达式......现在你有两个问题。”
如果我们假设'test:'不是要解析的实际字符串的一部分,那么很容易解决您的问题。
<?php
$in = '002005@1111@333333@;10205@2000@666666@;002005@1111@55555@;';
function splitGroupsAndGetColumn($input, $groupSeparator, $columnSeparator, $columnIndex, $skipEmpty=true)
{
$result = array();
$groups = explode($groupSeparator, $input);
foreach($groups as $group)
{
$columns = explode($columnSeparator, $group);
if (isset($columns[$columnIndex]))
{
array_push($result, $columns[$columnIndex]);
}
else if (! $skipEmpty)
{
array_push($result, NULL);
}
}
return $result;
}
var_dump(splitGroupsAndGetColumn($in, ';', '@', 2));
输出:
array(3) {
[0]=>
string(6) "333333"
[1]=>
string(6) "666666"
[2]=>
string(5) "55555"
}
答案 4 :(得分:0)
我的版本:)
正则表达式(\ d +)意味着我希望所有这些都是一个或多个
php > $a = '002005@1111@333333@;10205@2000@666666@;002005@1111@55555@';
php > preg_match_all('/(\d+)/',$a,$matches);
php > var_dump($matches);
array(2) {
[0]=>
array(9) {
[0]=>
string(6) "002005"
[1]=>
string(4) "1111"
[2]=>
string(6) "333333"
[3]=>
string(5) "10205"
[4]=>
string(4) "2000"
[5]=>
string(6) "666666"
[6]=>
string(6) "002005"
[7]=>
string(4) "1111"
[8]=>
string(5) "55555"
}
[1]=>
array(9) {
[0]=>
string(6) "002005"
[1]=>
string(4) "1111"
[2]=>
string(6) "333333"
[3]=>
string(5) "10205"
[4]=>
string(4) "2000"
[5]=>
string(6) "666666"
[6]=>
string(6) "002005"
[7]=>
string(4) "1111"
[8]=>
string(5) "55555"
}
}