我正在尝试使用PHP制作面包屑。 (我见过一些交钥匙解决方案,但它们并不完全符合我的需求) 我需要从末尾(向后)修剪一个字符串,直到第二次出现»。我尝试过贪婪/懒惰的表达方式,不同组合的量词,但都是徒劳的。该字符串要么保持未修剪状态,要么切换到»的最后一个(从结束开始计算)。需要你的帮助!
这个修剪到最后一次:
<?php
$foo = 'First Text » Second text » Third text » Maybe Forth text » ' ;
if ($thisFolder == "index"){
echo preg_replace('/(»(.+?)»)? $/', '', $foo);
}
?>
答案 0 :(得分:1)
您不需要正则表达式:
$parts = explode('»', $foo);
$result = implode('»', array_slice($parts, 0, -2));
答案 1 :(得分:1)
最简单的方法是匹配整行,并将第一部分用作$replacement
。
$foo = 'First Text » Second text » Third text » Maybe Forth text » ' ;
echo preg_replace('/^(.*)(?:».*){2}/', '$1', $foo);
在这里,第一个.*
优先,消耗尽可能多(贪婪)。
$1
反向引用第一组匹配的部分,用作替换。