Php 过滤这些结果?
假设我有以下文本: [4294954874;中心702L 14294954873;闪电DL904 1] 我希望以数组形式返回它们,例如:Php 过滤这些结果?,php,Php,假设我有以下文本: [4294954874;中心702L 14294954873;闪电DL904 1] 我希望以数组形式返回它们,例如: $array = array('Centhor 702L', 'Lightning DL904'); 使用PHP实现这一点的最佳方法是什么 当我抓取响应时,我需要的信息左右两侧的内容是随机生成的。外部结构将解析为JSON和JSON_decode,从而生成一个数组,您可以使用正则表达式进一步提取该数组 $s = '["4294954874;Centhor 70
$array = array('Centhor 702L', 'Lightning DL904');
使用PHP实现这一点的最佳方法是什么
当我抓取响应时,我需要的信息左右两侧的内容是随机生成的。外部结构将解析为JSON和JSON_decode,从而生成一个数组,您可以使用正则表达式进一步提取该数组
$s = '["4294954874;Centhor 702L (1)","4294954873;Lightning DL904 (1)","123876238547;Some Stuff (1500) (2)","4294961598;FXDWG Wide Glide (1584) (20)","4294954805;FXDWG Wide Glide (1690) (3)"]';
$arr = json_decode($s);
$output = array();
foreach ($arr as $part) {
$matches = array();
// Regex gets everything following the ;, but not ()
preg_match('/;([A-za-z0-9.-() ]+)\s+\(\d+\)$/', $part, $matches);
var_dump($matches[1]);
// Add to an array...
$output[] = trim($matches[1]);
}
输出
别忘了删掉空格
你可能会问,为什么不用正则表达式来完成整个过程呢?好吧,在嵌套引号内工作将是一件痛苦的事情,可能您需要捕获其他字符,如.,这也会有问题,因为它们也显示为分隔符。外部结构将解析为JSON,并使用JSON_decode,从而生成一个数组,您可以使用正则表达式进一步提取该数组
$s = '["4294954874;Centhor 702L (1)","4294954873;Lightning DL904 (1)","123876238547;Some Stuff (1500) (2)","4294961598;FXDWG Wide Glide (1584) (20)","4294954805;FXDWG Wide Glide (1690) (3)"]';
$arr = json_decode($s);
$output = array();
foreach ($arr as $part) {
$matches = array();
// Regex gets everything following the ;, but not ()
preg_match('/;([A-za-z0-9.-() ]+)\s+\(\d+\)$/', $part, $matches);
var_dump($matches[1]);
// Add to an array...
$output[] = trim($matches[1]);
}
输出
别忘了删掉空格
你可能会问,为什么不用正则表达式来完成整个过程呢?好的,在嵌套引号内工作将是一件痛苦的事情,可能您需要捕获其他字符,例如,。这也会有问题,因为它们也显示为分隔符。您可以使用正则表达式。您可以使用正则表达式。非常感谢这一点,除了有hypens之外,它工作得很好,例如:4294958716;DR-Z 250 474294967269;DR-Z125 23-它只是将它们作为DR返回,DR@Latox只需在[]内添加连字符,如[a-za-z0-9-]中所示。一定是在0-9之后,迈克尔,这很有效。非常感谢。您建议如何处理:4294961598;FXDWG宽滑轨1584204294954805;FXDWG Wide Glide 1690 3,-我们希望保留第一组括号中的内容,例如1584和1690,但去掉其他2个。@Latox这使它更复杂一些。请参见我在上面对表达式所做的编辑。我不能保证它在任何情况下都能工作,但它在我的测试中起了作用。@Latox补充道。在[]中,添加了-。非常感谢,除了有hypens外,它工作得很好,例如:4294958716;DR-Z 250 474294967269;DR-Z125 23-它只是将它们作为DR返回,DR@Latox只需在[]内添加连字符,如[a-za-z0-9-]中所示。一定是在0-9之后,迈克尔,这很有效。非常感谢。您建议如何处理:4294961598;FXDWG宽滑轨1584204294954805;FXDWG Wide Glide 1690 3,-我们希望保留第一组括号中的内容,例如1584和1690,但去掉其他2个。@Latox这使它更复杂一些。请参见我在上面对表达式所做的编辑。我不能保证它在任何情况下都能工作,但它在我的测试中起了作用。@Latox补充道。在[]内添加了-以及。