PHP:如何删除两个字符块之间的字符串部分而不删除太多?
这个问题快把我逼疯了。假设我有一个字符串:PHP:如何删除两个字符块之间的字符串部分而不删除太多?,php,Php,这个问题快把我逼疯了。假设我有一个字符串: This is a &start;pretty bad&end; string that I want to &start;somehow&end; display differently 我希望能够删除&start;(完);零件以及介于两者之间的所有零件,因此它表示: This is a string that I want to display differently 我尝试使用preg_替换为正则表达式,但
This is a &start;pretty bad&end; string that I want to &start;somehow&end; display differently
我希望能够删除&start;(完);零件以及介于两者之间的所有零件,因此它表示:
This is a string that I want to display differently
我尝试使用preg_替换为正则表达式,但效果太好,即:
This is a display differently
问题是:如何在&start;(完);配对并确保不会删除任何&end;和&开始;分段
请记住,我正在处理数百个彼此非常不同的字符串,因此我正在寻找一个灵活的解决方案,可以处理所有这些字符串
提前感谢您在这方面的帮助
编辑:将美元符号替换为符号。哎呀 试试这个正则表达式
/\&start;(.+?)\$end/g
它看起来可以按需要工作:试试这个正则表达式
/\&start;(.+?)\$end/g
它看起来可以按预期工作:我很快在chrome控制台上使用JS尝试了它,尝试将其转换为PHP:
"This is a &start;pretty bad$end; string that I want to &start;somehow$end; display differently".replace(/\&start;(.+?)\$end;/g, "")
我很快就用JS在chrome控制台上进行了尝试,尝试将其转换为PHP:
"This is a &start;pretty bad$end; string that I want to &start;somehow$end; display differently".replace(/\&start;(.+?)\$end;/g, "")
你试了什么?从匹配的字符串中排除$或至少非贪婪地搜索它是很重要的。@eckes我试过了,但它做到了我在问题中所说的(去掉了太多):
/\&start;[^>]+\&end/
[^$]+?
不包括$。(不知道Dollar和ampersand是否正确,你都提到了)。如果你加上?它甚至不是贪婪的(但两者中的一个就足够了)@eckes-Oops!它们应该都是符号。把你的regex
贴出来。这可能很好,您所要做的就是在*
(或+
)之后添加一个?
,使其不贪婪。您尝试了什么?从匹配的字符串中排除$或至少非贪婪地搜索它是很重要的。@eckes我试过了,但它做到了我在问题中所说的(去掉了太多):/\&start;[^>]+\&end/
[^$]+?
不包括$。(不知道Dollar和ampersand是否正确,你都提到了)。如果你加上?它甚至不是贪婪的(但两者中的一个就足够了)@eckes-Oops!它们应该都是符号。把你的regex
贴出来。这可能很好,您所要做的就是在*
(或+
)之后添加一个?
,使其不贪婪。我刚刚修改了用户regex。它似乎与\&
一起工作,但是你是正确的,我相信它可能只是&
我刚刚修改了用户正则表达式。它似乎与\&
一起工作,但是你是正确的,我相信它可能只是&