使用PHP从数组中提取字符串中特定字符的两个计数之间的文本

使用PHP从数组中提取字符串中特定字符的两个计数之间的文本,php,parsing,Php,Parsing,因此,我正在编写一个脚本,从半可预测的数据字符串中提取特定的数据字段,并尝试使用PHP获取特定字符的第70次和第71次计数之间的文本 因此,数据的示例字符串如下所示 00000 |数据|数据|文本|数据|数据||| 如何使用PHP获取第4和第5个“|”之间的“文本”。文本字段会发生变化,因此我不能仅使用正则表达式来匹配和提取它。我能想到的唯一合乎逻辑的方法是使用“|”计数,每次都是可预测的 你知道我怎样才能做到这一点吗?我认为我的PHP技能还算中等,但无论我怎么努力,我都无法解决这个问题。评论部

因此,我正在编写一个脚本,从半可预测的数据字符串中提取特定的数据字段,并尝试使用PHP获取特定字符的第70次和第71次计数之间的文本

因此,数据的示例字符串如下所示

00000 |数据|数据|文本|数据|数据|||

如何使用PHP获取第4和第5个“|”之间的“文本”。文本字段会发生变化,因此我不能仅使用正则表达式来匹配和提取它。我能想到的唯一合乎逻辑的方法是使用“|”计数,每次都是可预测的


你知道我怎样才能做到这一点吗?我认为我的PHP技能还算中等,但无论我怎么努力,我都无法解决这个问题。

评论部分@johncode给出的拆分选项是一种方法。您还可以使用正则表达式替换:

$input=“00000 |数据|数据|文本|数据|数据| |”;
$match=preg|u replace(“/(?:[^ |]+\\|){4}([^ |]+).$/”,“$1”,$input);
echo$match;#文本

注释部分@johncode给出的拆分选项是一种方法。您还可以使用正则表达式替换:

$input=“00000 |数据|数据|文本|数据|数据| |”;
$match=preg|u replace(“/(?:[^ |]+\\|){4}([^ |]+).$/”,“$1”,$input);
echo$match;#文本

当您的字符串包含由公共分隔符分隔的字符时,您可以使用该分隔符将该字符串拆分为由该分隔符分隔的片段,并将片段放入数组中。然后,您可以使用标准数组访问语法访问一个片段(记住数组从零开始计数)

逐步:

$pieces = explode("|", "00000|data|data|data|text|data|data|||");
echo $pieces[4]; // Get fifth string
用于较短的语法:

echo explode("|", "00000|data|data|data|text|data|data|||")[4];

当字符串包含由公共分隔符分隔的字符时,可以使用该分隔符将该字符串拆分为由该分隔符分隔的段,并将这些段放入数组中。然后,您可以使用标准数组访问语法访问一个片段(记住数组从零开始计数)

逐步:

$pieces = explode("|", "00000|data|data|data|text|data|data|||");
echo $pieces[4]; // Get fifth string
用于较短的语法:

echo explode("|", "00000|data|data|data|text|data|data|||")[4];

如果我错了,请更正,但是
[4]
是“引用”。取消引用将使用
list()
[$1、$2、$3、$4、$5、$6、$7、$8、$9、$10]=explode(“|’,…)此爆炸应限制为6个元素,因为OP只需要访问第5个元素——这样您就不会浪费时间再爆炸65次。如果我错了,请纠正我,但是
[4]
是“引用”。取消引用将使用
list()
[$1、$2、$3、$4、$5、$6、$7、$8、$9、$10]=explode(“|’,…)此分解应该限制为6个元素,因为OP只需要访问第5个元素——这样您就不会浪费时间再分解65次。或者
preg\u match(“/(?:\ \ \?\K[^ |]+){5}/,$input,$matches)$匹配项[0]:“
也将使用
preg\u match(/(?:\\\\\?\K[^\\]+){5}/”,$input,$matches)$匹配[0]:''
也将起作用