草庐IT

fastlane-match

全部标签

php - preg_match_all能匹配获取的最大字符串长度?

我正在尝试使用preg_match_all()解析一些网页,其中一些网页非常大,有几MB。并且其中一个正则表达式匹配了一些文本字符串,这些字符串非常大,以至于它们似乎无法匹配并获取它们。它只是返回一个空字符串。当我手动选择它并将其保存为.txt文件时,其中一个字符串是1.32MB或1,393,557字节。当字符串短得多,只有几万字节时,正则表达式成功匹配并获取它。所以我的问题是,我发现preg_match_all()可以匹配的字符串有一个限制/最大长度,它是什么以及如何将它设置得更大? 最佳答案 将ini_set('pcre.bac

php - 破折号和下划线的 preg_match 的奇怪行为

我有以下两个表达式。两者几乎相同,首先我检查以3个破折号结尾的字符串,然后检查以3个下划线结尾的字符串$str="this-is_normal-test---";$str=preg_match("/[a-zA-z0-9]+(-+)$/",$str,$matches);print_r($matches);$str="this-is_normal-test___";$str=preg_match("/[a-zA-z0-9]+(_+)$/",$str,$matches);print_r($matches);这是输出:Array([0]=>test---[1]=>---)Array([0]=>

php - 使用 preg_match 检查字母数字点破折号和下划线的正则表达式是什么?

我正在检查用户输入的用户名我正在尝试使用preg_match()在PHP中验证用户名,但我似乎无法让它按照我想要的方式工作。我需要preg_match()来:只接受字母、数字和。-_即只有字母数字点破折号和下划线,我尝试了htaccess中的正则表达式,就像这样([A-Za-z0-9.-_]+)就像这样,但它似乎不起作用,它为简单的alpha用户名提供false。$text='username';if(preg_match('/^[A-Za-z0-9.-_]$/',$text)){echo'true';}else{echo'false';}我怎样才能让它发挥作用?我打算像这样在函数中使

php preg_match 只匹配数字、字母和点

我已经搜索了2个小时了,但还是没找到。我需要评估帐户名称的输入。这只能包含数字(0-9)、字母(a-z和A-Z)和点(.).其他一切都是被禁止的。所以,没有下划线(_),加上(+)等等。有效的帐户应该是这样的,例如:john.greenluci.mayer89admin我尝试了很多preg_match/regex示例,但无法正常工作。每当我执行echopreg_match(...)时,我都会将1设为true。$accountname="+_#luke123*";echopreg_match("/[a-z0-9.]/i",$accountname);//-->givesback1astr

带有克罗地亚字符的 PHP preg_match

我是正则表达式的新手,但在StackOverflow上进行了一些搜索,我设法得到了我想要的东西(如果2个以上的单词用逗号分隔,则返回true,如果不是,则返回false或这个词以逗号结尾,但后面没有任何内容),除了我对克罗地亚语字符(č,ć,ž,đ,š大写和小写)有疑问。我当前的preg_match看起来像if(preg_match('/^(([a-zA-Z0-9]+\\s*,\\s*)+(\\s*)([a-zA-Z0-9]+))$/',$data)){//dostuff}但是这种方法的问题是如果它有Č,ć,ž...并且我不会返回true知道这是因为[a-zA-Z]没有“寻找”这个字符

php preg_match_all 返回数组数组

我想替换一些模板标签:$tags='{name}text{first}';preg_match_all('~\{(\w+)\}~',$tags,$matches);var_dump($matches);输出是:array(2){[0]=>array(2){[0]=>string(6)"{name}"[1]=>string(7)"{first}"}[1]=>array(2){[0]=>string(4)"name"[1]=>string(5)"first"}}为什么里面有2个数组?如何实现仅第二个? 最佳答案 那是因为您的正则表达式可

php - preg_match 模式在 php v 5 中不起作用

我使用的是PHP5.4.45版。我在php版本7中测试了这段代码并且工作正常但在版本5.4.45中不起作用$string='9301234567';if(preg_match('/^\9\d{9}/',$string)){$string='0+1'.$string;return$string;}在v7中返回:0+19301234567但在v5.4.45中返回(preg_match返回false)9301234567我如何在phpv5.4.45中使用preg_match('/^\9\d{9}/',$string)?谢谢 最佳答案 简介

php - 字符串的特殊 preg_match

这是我的字符串:================================================================================INPUTFILE================================================================================NAME=CO-c0m1.txt|1>!HFdef2-TZVPoptnumfreq|2>|3>%scf|4>convergencetight|5>end|6>|7>*xyz01|8>C000|9>O001|10>*|11>|12>****

php - preg_match 到 domain.tld

如何获取只包含domain.tld的字符串?if(preg_match('^(?:[-A-Za-z0-9]+\.)+[A-Za-z]{2,6}$',$domain))echo"domain.tldfound!";但对于正则表达式^(?:[-A-Za-z0-9]+\.)+[A-Za-z]{2,6}$,子域是还可以。但我只想检查“domain.tld”。我应该使用什么正则表达式?谢谢。 最佳答案 if(preg_match('/^[-a-z0-9]+\.[a-z]{2,6}$/',strtolower($domain)))echo"do

php - 调整在电话号码上使用 Preg_Match()

我正在使用preg_match从一段文本中提取美国电话号码的各个部分。我已经可以提取号码了。但我想让match[0]只包含电话号码。问题:我的模式很接近,但我需要一些帮助来摆脱电话号码前的任何文本。如何去掉前面的字符串"Heymyphoneis"?PHP代码$pattern='/.*?(?:1(?:[.-])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})'.'(?:(?输出Array([0]=>Heymyphoneis911-628-4539[1]=>911[2]=>628[3]=>4539) 最佳答案 只需删除