草庐IT

PHP PREG 正则表达式 : What does "\W" mean when using the UTF-8 modifier?

我知道正常phpregex(ASCII模式)“\w”(单词)表示“字母、数字和_”。但是,当您将多字节正则表达式与the"u"modifier一起使用时,这意味着什么??preg_replace('/\W/u','',$string); 最佳答案 任何不是字母、数字或下划线的内容。因此,就Unicode字符类而言,\W等同于不在L或N字符类中且不是下划线字符的每个字符。如果您使用\p{xx}编写它语法,它将等同于[^\p{LN}_]。 关于PHPPREG正则表达式:Whatdoes"\W

php - 获取方括号的内容,避免嵌套括号

(第一次发布者,通过Google的长期访问者)我正在尝试提取一些方括号的内容,但我有一点麻烦。我已经让它适用于圆括号,如下所示,但我看不出应该如何修改它以适用于方括号。我原以为在此示例中将圆形替换为方形,反之亦然,但显然不行。它需要忽略括号内的括号。所以它不会返回(11)但会返回(10(11)12)。$preg='#\(((?>[^()]+)|(?R))*\)#x';$str='123(456)(789)(10(11)12)';if(preg_match_all($preg,$str,$matches)){$matches=$matches[0];}else{$matches=arra

php - 使用正则表达式从 PHP 中的字符串解析函数

在PHP中使用正则表达式是否有一种合乎逻辑的方法来去除函数名称及其参数?目前我将它逐行拆分,以便我能够在每一行上都有每个函数以便于标记。所以:doSomeFunction(arg,moreargs,stuff);breakSomething();ini_set(include_path,/home/htdocs/);成为array([0]=>'doSomeFunction(arg,moreargs,stuff);',[1]=>'breakSomething();'andsoon...我遇到的真正问题是使用正则表达式使函数名称具有如下语法:$functionfromregex($args

php - 提取字符串中的每一次出现

我有一个形式为"a-b""c-d""e-f"...的字符串使用preg_match,我如何提取它们并获得一个数组:Array([0]=>a-b[1]=>c-d[2]=>e-f...[n-times]=>xx-zz)谢谢 最佳答案 你可以这样做:$str='"a-b""c-d""e-f"';if(preg_match_all('/"(.*?)"/',$str,$m)){var_dump($m[1]);}输出:array(3){[0]=>string(3)"a-b"[1]=>string(3)"c-d"[2]=>string(3)"e-

php - filter_var($url, FILTER_VALIDATE_URL) 使用哪个正则表达式 php?

filter_var($url,FILTER_VALIDATE_URL)似乎是检测$url是否包含url的好方法。有什么办法可以看出这个函数检测的是什么正则表达式?谢谢 最佳答案 它使用其他东西而不是正则表达式。在C中,它检查php_url_parse_ex()(C)函数的返回值,您可以在以下位置查看:ext/standard/url.c,line97,调用ext/filter/logical_filters.c,line440.用这些术语来说:如果您在PHP中调用parse_url()(PHP),并执行与php_filter_va

php - 正则表达式:从部分字符串中删除换行符 (PHP)

我想从一个XML文件中删除所有换行符和回车符,以便所有标签各占一行。XML源示例:001Resourcename1Loremipsumdolorsitamet,consecteturadipiscingelit.Maecenasnibhmagna,fermentumetpretiumvel,malesuadasitametdolor.Morbidictum,nuncsedinterdumfacilisis,ligulaenimpharetratortor,ategestasurnamassanonnulla.002Resourcename2Loremipsumdolorsitamet,

regex - 用 php preg_replace 只替换一次字符串

我需要一个replacestringonce函数,我相信preg_match可能是我最好的选择。我正在使用这个,但由于使用的动态性,有时这个函数表现得很奇怪:functionstr_replace_once($remove,$replace,$string){$pos=strpos($string,$remove);if($pos===false){//Nothingfoundreturn$string;}returnsubstr_replace($string,$replace,$pos,strlen($remove));}现在我正在采用这种方法,但遇到了下面列出的错误...。我正在

php - 根据模式更改字符串

我想通过删除第一个和最后一个字符来更改PHP中的字符串,但前提是它们相等。举几个例子:'abc'shouldbecome'abc''abca'shouldbecome'bc''abca'shouldnotchange我该怎么做?感谢您的帮助,基于正则表达式的解决方案有效。 最佳答案 您可以使用正则表达式:$str=preg_replace('~^(.)(.*)\1$~','$2',$str);正则解释:~:分隔符^:开始anchor(.):匹配并记住一个字符(这是第一个字符)(.*):匹配任何内容并记住\1:记忆第一场比赛$:结束a

php - 正则表达式被@符号包围是什么意思?

问题正则表达式被@符号包围是什么意思?这是否意味着不同于被斜线包围的东西?当@x或@i结束时呢?现在想想,周围的斜杠到底是什么意思?背景我看到了thisStackOverflowanswer,由约翰·库格曼(JohnKugelman)发布,他在其中展示了严格的正则表达式技能。现在,我习惯于看到正则表达式被斜线包围,如/^abc/但是他使用了一个被@符号包围的正则表达式:'@^%(.{2})#State,2chars([^^]{0,12}.)#City,13chars,delimitedby^([^^]{0,34}.)#Name,35chars,delimitedby^([^^]{0,2

PHP preg_replace 使正则表达式可选?

我有一些内容正在尝试解析...我有html,在html中我想用自定义字符串替换我所有的img标签。现在我遇到的问题之一是出现了一些内容:图像标签位于anchor之间。例如下面的代码我有工作......但我希望它是可选的,所以如果没有anchor标记被img标记包围,有没有人有任何关于正则表达式的好资源或者可以帮助我?谢谢!$content=preg_replace('#'.$image_tag.'#i',"{$image_id}",$content); 最佳答案 token后的问号使该token可选。使用(?...)对多个标记进行分