好的,我有一个复杂的问题要问你们。
我正在尝试从大量旧数据中提取一些值。它是一堆基本上由 7 个部分连接的字符串||
test1||keep||1:1||test||3462||7885||test
规则
字符串的每个部分都可以包含任何字符,除了
|
像这样的两个箭头<>
(见下文),它们被保留为分隔符。任何部分都可以是空的。
例如,在这一个中,前 1、5 和 6 部分是空的,而第 3 部分包含许多非字母数字字符。
||keep||test's\ (o-kay?).go_od||test||||||test
此外...
一些琴弦由这 7 根琴弦中的多个琴弦组成,进一步分开<>
test1||keep||1:1||test||3462||7885||test<>test1||keep||1:1||test||3462||7885||test<>test1||keep||1:1||test||3462||7885||test
请记住,任何内部部分都可能是空的。
test54||keep||test's\ (o-kay?).go_od||test||||||<>test||keep||test545's'/.||test||||test||test
目标
只提取每个字符串的第二部分,然后放入一个数组中。在我上面的例子中,每个部分都有这个词keep
。
所以对于这个例子:
||keep||test's\ (o-kay?).go_od||test||||||test
我想得到:
array('keep')
对于这个例子:
test1||keep-me||1:1||test||3462||7885||test<>||keep||||||3462||7885||<>test1||keep-me-too!||1:1||test||3462||||test
它可以看作是 3 个不同的字符串,由 分隔<>
:
test1||keep-me||1:1||test||3462||7885||test
||keep||||||3462||7885||
test1||keep-me-too!||1:1||test||3462||||test
我想提取:
array('keep-me', 'keep', 'keep-me-too!')
笔记
我尝试过这样做,preg_match
但后视不喜欢搜索非固定长度的字符串。
我无法更改数据。这是我必须处理的旧数据。