草庐IT

Preg_match

全部标签

php - 这个 preg_replace 中的 $1$2$4 是什么意思?

得到这个函数来修改查询字符串,想知道pre_replace的替换部分是什么意思(即-$1$2$4)。functionadd_querystring_var($url,$key,$value){$url=preg_replace('/(.*)(\?|&)'.$key.'=[^&]+?(&)(.*)/i','$1$2$4',$url.'&');$url=substr($url,0,-1);if(strpos($url,'?')===false){return($url.'?'.$key.'='.$value);}else{return($url.'&'.$key.'='.$value);}

php - Preg_replace 与数组替换

$string=":abcand:defhaveapples.";$replacements=array('Mary','Jane');应该变成:MaryandJanehaveapples.现在我是这样做的:preg_match_all('/:(\w+)/',$string,$matches);foreach($matches[0]as$index=>$match)$string=str_replace($match,$replacements[$index],$string);我可以使用preg_replace之类的东西在单次运行中完成吗? 最佳答案

PHP preg_match 获取字符串之间

我正在尝试获取字符串helloworld。这是我目前所得到的:$file="1232#helloworld#";preg_match("#1232\#(.*)\##",$file,$match) 最佳答案 建议使用#以外的分隔符,因为您的字符串包含#和非贪婪的(.*?)捕获#之前的字符。顺便说一句,如果#不是定界符,则不需要在表达式中对其进行转义。$file="1232#helloworld#";preg_match('/1232#(.*?)#/',$file,$match);var_dump($match);//Prints:ar

PHP 正则表达式 : How to match\r and\n without using [\r\n]?

我已经测试了\v(垂直空白)以匹配\r\n及其组合,但我发现\v不匹配\r和\n。下面是我正在使用的代码..$string="Test";if(preg_match("#\v+#",$string)){echo"Matched";}else{echo"NotMatched";}更清楚地说,我的问题是,是否有任何其他替代方法可以匹配\r\n? 最佳答案 PCRE和换行符PCRE有过多的与换行相关的转义序列和替代品。好吧,您可以在此处使用的一个漂亮的转义序列是\R。默认情况下\R将匹配Unicode换行符序列,但它可以使用不同的替代方案

PHP preg_replace 匹配多行的正则表达式

如何创建考虑到主题由多行组成的正则表达式?一个的“m”修饰符似乎不起作用。 最佳答案 MaxwellTroyMiltonKing是对的,但由于他的回答有点简短,我也将其发布并提供一些示例来说明。首先,.元字符默认不匹配换行符。许多正则表达式实现都是如此,包括PHP的风格。也就是说,拿文字:$text="Line1\nLine2\nLine3";和正则表达式'/.*/'那么正则表达式将只匹配第1行。自己看看:preg_match('/.*/',$text,$match);echo$match[0];//echos:'Line1'因为.

php - 使用 PHP 5.2.6 将附加参数传递给 preg_replace_callback

我一直在研究类似的问题,但我仍然不太清楚使用PHP5.2.6在preg_replace_callback中传递附加参数是否可能和/或最好的方法在这种情况下,我还希望将$key从foreach循环传递到if_replace函数。publicfunctionoutput(){if(!file_exists($this->file)){return"Errorloadingtemplatefile($this->file).";}$output=file_get_contents($this->file);foreach($this->valuesas$key=>$value){$tagTo

php - 如何使用 preg_match_all() 获取子组匹配的所有捕获?

这个问题在这里已经有了答案:Getrepeatedmatcheswithpreg_match_all()(6个回答)关闭3年前。更新/注意:IthinkwhatI'mprobablylookingforistogetthecapturesofagroupinPHP.引用:PCREregularexpressionsusingnamedpatternsubroutines.(仔细阅读:)我有一个包含可变数量段的字符串(简化):$subject='AABBDD';//couldbe'AABBDDCCEE'aswell我现在想匹配段并通过匹配数组返回它们:$pattern='/^(([a-z

PHP 过滤器使用 preg_replace 只允许字母数字和一些标点符号

我对preg_replace有个小问题.我需要一个函数来删除除[A-z][0-9]之外的所有字符和.!?.我可以使用preg_match,但这只验证字符串,我想删除字符。这样我就不会把像这样的垃圾字符放在最后和;[[;[p;[在描述META标签中。所以函数必须这样做:;")kk23?!→brkk23?!任何帮助将不胜感激:D 最佳答案 $string=';")kk23?!';$new_string=preg_replace("/[^A-Za-z0-9.!?]/",'',$string);echo$new_string;叶子:字母、数

PHP 在 preg_replace 上崩溃

我使用php.exe运行了以下脚本:preg_replace('#(?:^[^\pL]*)|(?:[^\pL]*$)#u','',$string);或其等价物:preg_replace('#(?:^[^\pL]*|[^\pL]*$)#u','',$string);如果$string="S"或$string="ذذ"它有效,如果string='ذ'它产生�不正确,如果string='ذذ'PHP崩溃。但它适用于4.4.0-4.4.9、5.0.5-5.1.6版本。怎么了?参见:http://3v4l.org/T3rpVOutputfor5.4.0-5.5.0alpha6Processexi

php - 如何将重音字符与 PHP preg 匹配?

我想让我的用户不仅可以填写字母和数字,还可以填写“á”、“é”等“特殊”字母。但是,我不希望他们能够使用“!”、“@”、“%”等符号。有没有办法编写一个正则表达式来完成这个?(最好不要指定每个特殊字母。)现在我有:$reg='/^[\w\-]*$/'; 最佳答案 您可以使用Unicodecharacterproperties描述人物:/^[\p{L}-]*$/u\p{L}描述了Unicode字母字符的类别。 关于php-如何将重音字符与PHPpreg匹配?,我们在StackOverflo