Php 正则表达式。。。“如何支持某些文本”'&引用;但不是另一个。。。(菲律宾)

Php 正则表达式。。。“如何支持某些文本”'&引用;但不是另一个。。。(菲律宾),php,regex,Php,Regex,我有以下案文: $txt1 = "aaa'bbb'ccc'ddd''eee'fff"; 我想保留这一点: "aaacccfff" 但当我使用它时: $txt2 = preg_replace ( #\'.+\'# , "" , $txt1); 我得到了萨卡 $txt2 == "aaafff" (我在Batle中丢失了“ccc”) 感谢您的帮助您可以使用str\u替换 $txt1 = "aaa'bbb'ccc'ddd''eee'fff"; $txt = str_replace("'",

我有以下案文:

$txt1 = "aaa'bbb'ccc'ddd''eee'fff";
我想保留这一点:

 "aaacccfff"
但当我使用它时:

$txt2 = preg_replace ( #\'.+\'# , "" , $txt1);
我得到了萨卡

$txt2 == "aaafff"
(我在Batle中丢失了“ccc”)


感谢您的帮助

您可以使用
str\u替换

$txt1 = "aaa'bbb'ccc'ddd''eee'fff";

$txt = str_replace("'", "", $txt1);

echo $txt;

这就是您需要在单引号之间替换字符的地方。演示

这里,

按字面意思匹配字符

[^']
匹配单个字符,但不匹配

+
量词-一次和无限次之间的匹配

按字面意思匹配字符

因此,使用上面的正则表达式,您只需匹配模式,并最终将单引号(')中的字符替换为'


默认情况下,正则表达式是贪婪的,这意味着它们匹配最长的匹配。 您的正则表达式匹配
'bbb'ccc'ddd''eee'
,并将其替换为零

在您的情况下,您必须使用惰性变量,使用
运算符来获得最短的可能匹配,例如

$txt2 = preg_replace ( '/\'.+?\'/' , "" , $txt1);
实例:


对于贪婪/懒惰的正则表达式,请参见例如

在这种情况下,首先测试正则表达式所涵盖的内容会有所帮助。(=太贪婪了)
preg\u replace
使用很棒的工具!!!谢谢:-我怎样才能表明这个问题已经解决了?是的。。。但是@ctwheels没有回答,他对我的问题做了评论。。。我记不清我的问题了!
m
修饰符在这里的作用是什么?不管怎样,你只需要。不需要
m
修饰符。犯了愚蠢的错误。谢谢你给我指出投票失败的原因
aaacccfff
$txt2 = preg_replace ( '/\'.+?\'/' , "" , $txt1);