说我有以下文字:
["4294954874;Centhor 702L (1)","4294954873;Lightning DL904 (1)"]
我想在数组中返回它们,例如:
$array = array('Centhor 702L', 'Lightning DL904');
使用PHP执行此操作的最佳方法是什么?
当我抓住响应时,我需要的信息左侧和右侧的内容是随机生成的。
答案 0 :(得分:4)
外部结构将使用json_decode()
解析为JSON,从而生成一个可以使用正则表达式进一步提取的数组。
$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]);
}
array(5) {
[0]=>
string(12) "Centhor 702L"
[1]=>
string(15) "Lightning DL904"
[2]=>
string(17) "Some Stuff (1500)"
[3]=>
string(23) "FXDWG Wide Glide (1584)"
[4]=>
string(23) "FXDWG Wide Glide (1690)"
}
不要忘记修剪空白。
为什么不用正则表达式完成整个事情,你可能会问?好吧,在嵌套引号内工作会很麻烦,也许你需要像.,
那样捕获其他字符,这些字符也会有问题,因为它们也会显示为分隔符。