使用 php 我想根据匹配部分之后的部分是否不包含某些字符来检测字符串中的某些内容。我想我可能需要使用前瞻否定断言,但它没有像我预期的那样工作,所以不确定。例如:
$string = 'test somerandomURL><b>apple</b> peach orange';
我想要一个表达式,它可以检测到第一个 > 之前的所有内容,只要<b>apple</b>
不立即跟随第一个 >
我试过了
if(preg_match("/test(.*)>(?!<b>apple<\/b>)(.*)/i",$string)){
echo 'true since <b>apple</b> does not follow > in string';
}else{
echo 'false since <b>apple</b> follows > in string';
}
当字符串<b>apple</b>
在 > 之后包含时,它会按照我的预期和需要返回 false,但是当我将字符串更改为<b>peach</b>
在 > 之后而不是<b>apple</b>
它仍然返回 false 并且我需要它返回 true 时。如果没有粗体标签,它似乎可以按我的预期工作。任何想法我做错了什么?