即使存在正则表达式模式,PHP preg_匹配也会失败

即使存在正则表达式模式,PHP preg_匹配也会失败,php,regex,preg-match,regex-lookarounds,Php,Regex,Preg Match,Regex Lookarounds,我想复制这个面包屑数组,每个面包屑减去面包屑的最后一项 我已经试过了。我已经尝试了preg_matching模式“/.*(=\s»\s)/”,它应该在»的最后一个实例之前获取所有内容。这是我尝试的解决方案: <?php $breadcrumb = array ( 'More » Brackets & Mounting » StarTech MNRISERCLMP', 'Printer Consumables » Toner Cartridges » Other Brand

我想复制这个面包屑数组,每个面包屑减去面包屑的最后一项

我已经试过了。我已经尝试了
preg_match
ing模式“/.*(=\s»\s)/”,它应该在
»
的最后一个实例之前获取所有内容。这是我尝试的解决方案:

<?php
$breadcrumb = array (
  'More » Brackets & Mounting » StarTech MNRISERCLMP',
  'Printer Consumables » Toner Cartridges » Other Brand » Sharp MX27GTMA',
  'More » Audio Visual » TVs » Philips 43BDL4051T-EXG',
  'Servers » Server Cables & Accessories » Other Server Accessories » LINKBASIC LB-WCC09-655-CA'
);



foreach($breadcrumb as $breadcrumbs){
        preg_match("/.*(?=\s»\s)/",$breadcrumbs,$matches);
        echo $matches[1] . '<br />';
    }

实际上,您的结果将在
$matches[0]
中:

echo$matches[0]。'
或者尝试以下模式:

preg_match(“/(.+)\s»\s.+$/”,$breadcrumbs,$matches);
echo$匹配项[1]。'

可能更容易
分解()
>
上的字符串,然后从结果数组中删除最后一个元素,并使用
内爆()
重建字符串非常好-这似乎可行。我原来的模式定义出了什么问题?是什么让这一个在另一个失败的情况下工作?您没有在模式中指定组,因此结果将是
$matches[0]
。我已经更新了答案。