Php 提取具有不可预测内容的可预测结构化字符串的特定部分
好吧,我有一个复杂的问题要问你们 我试图从大量旧数据中提取一些值。它是一组字符串,基本上由7个部分组成,与Php 提取具有不可预测内容的可预测结构化字符串的特定部分,php,regex,Php,Regex,好吧,我有一个复杂的问题要问你们 我试图从大量旧数据中提取一些值。它是一组字符串,基本上由7个部分组成,与| test1||keep||1:1||test||3462||7885||test 规则 字符串的每个部分都可以包含任何字符,除了|或像这样的两个箭头(请参阅下面的部分),它们被保留为分隔符 任何部分都可能是空的 test54||keep||test's\ (o-kay?).go_od||test||||||<>test||keep||test545's'/.||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
e、 g.在这一部分中,第一、第五和第六部分为空,第三部分包含大量非字母数字字符
||keep||test's\ (o-kay?).go_od||test||||||test
此外… 一些字符串由这7个片段中的多个片段组成,进一步用
我想得到:
array('keep')
对于这个例子:
||keep||test's\ (o-kay?).go_od||test||||||test
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
来执行此操作,但look behind不喜欢搜索非固定长度的字符串
我无法更改数据。这是我必须处理的旧数据。$array=[];
$array = [];
$strings = explode('<>', $yourContent);
foreach ($strings as $string) {
$array[] = explode('||', $string)[1];
}
$strings=explode(“”,$yourContent);
foreach($strings作为$string){
$array[]=分解(“| |,$string)[1];
}
这使用了PHP5.4中引入的数组解引用。发布您的尝试…在
上分解,然后在|
上分解每个片段?@andrewsi这可能是必须的。谢谢,我将对此进行测试并报告,因为我必须对8000行数据执行此操作,然后循环处理8000组结果。
array('keep-me', 'keep', 'keep-me-too!')
$array = [];
$strings = explode('<>', $yourContent);
foreach ($strings as $string) {
$array[] = explode('||', $string)[1];
}