更新时间:2023-02-21 19:35:15
正则表达式模式可以不那么严格、简单且更易于读取/维护。
您需要将第一行(条件表达式)与唯一的动态组件$rule
变量逐字匹配,然后匹配紧随其后的整行。
编码:(Demo)
$contents = <<<'TEXT'
else if($rule=='somerule1')
echo '{"s":1,"n":"name surname"}';
else if($rule=='somerule2')
echo '{"s":1,"n":"another text here"}';
TEXT;
$rule = "somerule1";
echo preg_replace("~Qelse if($rule=='$rule')ER.+~", "", $contents);
输出:
else if($rule=='somerule2')
echo '{"s":1,"n":"another text here"}';
那么,我做了什么?这是official pattern demo。
Q
.E
表示按字面意思对待这两个元字符之间的所有内容(&Q)$
,这并不是要阻止它被解释为字符串结尾的元字符,而是要将其解释为$rule
变量的开始,因为模式用双引号括起来。$rule
确实需要解释为变量,这样它就不会转义。R
是元字符,意思是
,
和
.
与一个或多个限定符(+
)匹配。