Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:如何删除两个字符块之间的字符串部分而不删除太多?_Php - Fatal编程技术网

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。它似乎与
\&
一起工作,但是你是正确的,我相信它可能只是
&
我刚刚修改了用户正则表达式。它似乎与
\&
一起工作,但是你是正确的,我相信它可能只是
&