从按不规则顺序的管道划分的字符串中提取值


Extract values from string divided by pipes not in regular order

我导入的xml中有一部分不是按常规顺序导入的。例如:

87||1|#88|2|#89||2|50198#41||1|#3||117#20||#6|20|1|#24||78#145|5|#36|||90#37|||96#29||||67#26|||17||#25|||

我创建了这样一个函数:function caratteristiche1($title) { $title=substr($title,11,1); return $title; }

以接收#88的值,但有时#88不在该位置并且其他时间#88不存在。我想使用一个函数来搜索#88,并给出2个子管道之后的值。

我能做什么?非常感谢!

如果#88和两个管道之间的距离在所有情况下都相同,则可以使用带有"正向查找断言"的正则表达式,请参阅http://php.net/manual/en/regexp.reference.assertions.php

如果没有,您可能需要使用普通PHP来定位#88,然后从那里获取剩余的子字符串并搜索这两个管道。

在回答"否"后编辑:在这种情况下,我不会和RegEx合作。试试这样的东西(可能不是100%准确的语法):

$pos88 = strpos('#88', $string);
newStr = substr($string, $pos88);
$posPipes = strpos('||', $newStr);
// ... and so forth ...