草庐IT

php - 从 preg_match_all() 获取行号

我正在使用PHP的preg_match_all()搜索使用file_get_contents()导入的字符串。正则表达式返回匹配项,但我想知道在哪个行号找到了这些匹配项。实现这一目标的最佳技术是什么?我可以将文件作为数组读取并为每一行执行正则表达式,但问题是我的正则表达式匹配回车符(新行)的结果。 最佳答案 好吧,有点晚了,也许你已经解决了这个问题,但我不得不这样做,而且相当简单。在preg_match中使用PREG_OFFSET_CAPTURE标志将返回匹配的字符位置。让我们假设$charpos,所以list($before)=s

PHP preg_replace\

非常简单的问题:如何preg_replace反斜杠字符? 最佳答案 是的,但你需要逃避它。在正则表达式中使用它时,使用\\在替换中使用它,使用\\\\(这将变成\\将被解释为单个反斜杠)。 关于PHPpreg_replace\,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2222643/

php - 使用 preg_replace 替换多次出现的相同符号?

假设我有这样一个字符串:$string="hello---world";我该如何将---替换为单个连字符?该字符串很容易看起来像这样:$string="hello--world----what-up";期望的结果应该是:$string="hello-world-what-up"; 最佳答案 $string=preg_replace('/-{2,}/','-',$string); 关于php-使用preg_replace替换多次出现的相同符号?,我们在StackOverflow上找到一个类

php - 每次使用不同的搜索和替换执行多个 preg_replace

我已经用str_replace做了类似的事情:$string=$url;$patterns=array();$patterns[0]='searchforme';$patterns[1]='searchforme1';$patterns[2]='searchforme2';$replacements=array();$replacements[0]='replacewithme';$replacements[1]='replacewithme1';$replacements[2]='replacewithme2';$searchReplace=str_replace($patterns

php - 为什么 preg_replace with/(.*)/repeat part of string?

为什么会出现下面的代码:输出abc.def.def而不是abc.def?我有兴趣了解为什么会出现重复。使用/(.+)/或/^(.*)$/按预期工作,但我不是在寻找解决方案,只是问一个问题(尽管这些模式可能与答案有关)。修改实时版本here. 最佳答案 因为.*匹配字符串末尾的空子串。这意味着字符串abc有两个匹配项:整个字符串abc→abc.def空字符串→.def它给出abc.def.def。编辑:String.replaceAll()anomalywithgreedyquantifiersinregex中解释了为什么会发生这种情

php - 相当于 PHP preg_replace 的 JavaScript

我一直在寻找PHPpreg_replace函数的js等价物,到目前为止我发现的只是string.replace。但是我不确定如何将我的正则表达式转换为JavaScript。这是我的PHP代码:preg_replace("/()*/",$str,$str);例如以下内容:testtesttesttest变成:test-test-test-test有人知道我如何在JavaScript中做到这一点吗? 最佳答案 vartext='testtesttesttest';varfixed=text.replace(/\s+/g,'-');

php - preg_match 与国际字符和口音

我想验证一个字符串,其模式只能包含字母(包括带重音符号的字母)。这是我使用的代码,它总是返回“nok”。我不知道我做错了什么,你能帮忙吗?谢谢$string='é';if(preg_match('/^[\p{L}]+$/i',$string)){echo'ok';}else{echo'nok';} 最佳答案 添加UTF-8modifierflag(u)到你的表情:/^\p{L}+$/ui也不需要将\p{L}包裹在字符类中。 关于php-preg_match与国际字符和口音,我们在Stac

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