草庐IT

preg_grep

全部标签

php - preg_match 如果第一个字符是斜线

我试图找出字符串的第一个字符是否为斜杠。我有这个字符串/var/www/html$mystring="/var/www/html";$test=preg_match("/^/[.]/",$mystring);if($test==1){echo"ret=1";}else{echo"ret=0";}但我总是得到ret=0。 最佳答案 试试这个: 关于php-preg_match如果第一个字符是斜线,我们在StackOverflow上找到一个类似的问题: https

PHP PREG_JIT_STACKLIMIT_ERROR - 低效的正则表达式

我在处理稍长的字符串时在preg_replace_callback()函数中收到PREG_JIT_STACKLIMIT_ERROR错误。超过2000个字符是无效的(超过2000个匹配正则表达式的字符,而不是2000个字符串)。我已经读到它是由效率低下的正则表达式引起的,但我不能让我的正则表达式更简单。这是我的正则表达式:/\{@([a-z0-9_]+)-(((%?[a-z0-9_]+(:[a-z0-9_]+)*)+)\|(((?R)|.)*)@\}/我们它应该匹配如下字符串:1){@if-statement|echothis|echootherwise@}2){@if-statemen

php - 计算相似的数组键

我有一个POST请求进入我的一个页面,这里是一小段:[shipCountry]=>UnitedStates[status]=>Accepted[sku1]=>test[product1]=>TestProduct[quantity1]=>1[price1]=>0.00此请求可以是任意大小,每个产品名称和数量的键将显示为“productN”和“quantityN”,其中N是从1开始的整数。我希望能够计算出有多少唯一键与上述格式相匹配,这样我就可以计算出订购了多少产品(请求中未明确给出的数字)。在PHP中执行此操作的最佳方法是什么? 最佳答案

php - FILTER_VALIDATE 与 Preg_match。使用哪一个?

要验证输入日期,无论是表单URL还是来自表单,您通常使用哪种技术?我一直在看PHPFilters但我很少在任何代码中看到它们。我平时看到过preg_mach的用法,例如:$numbers="/^[0-9]+$/D";if(preg_match($numbers,$var)){echo"isnumber";}代替:if(!filter_var($var,FILTER_VALIDATE_INT))echo"isnumber";}使用一个或另一个有什么好处吗?谢谢! 最佳答案 我的两分钱:视情况而定。这取决于您是否应该在正则表达式上使用过

php - 警告 : preg_replace() [function. preg-replace]:编译失败:在偏移量 1 处没有可重复的内容

有人可以帮助调试这个错误吗?Warning:preg_replace()[function.preg-replace]:Compilationfailed:nothingtorepeatatoffset1//Generateuidfunctiongen_uid($len=40){$hex=md5("what".uniqid("",true));$pack=pack('H*',$hex);$tmp=base64_encode($pack);$uid=preg_replace("#(*UTF8)[^A-Za-z0-9]#","",$tmp);$len=max(4,min(128,$len)

PHP preg_match() 匹配字符串末尾的字符

我有下面的if语句,它永远不会返回True。怎么了?我是PHP和正则表达式的新手。$String='123456';$Pattern="/\d{2}$/";//Iintendtomatch'56',whicharethelasttwodigitsofthestring.if(preg_match($Pattern$String,$matches)){echo'Matched';}如果$Pattern为"/^\d{2}/",则返回true并匹配数字'12';我的错误。上面的代码运行良好。在实际代码中,$String是从一个变量赋值的,它总是以一个我不知道的点结尾。上面最后两位匹配的要求只

php - 用于字符串匹配结束的函数 preg_match()

我正在尝试检查$url的最后一个字符是否为以下字符之一:.gif.png.bmp.jpg.jpeg其中之一效果很好:if(!preg_match('/\.jpg$/',$url))但是把它们放在一起是行不通的:if(!preg_match('/[\.gif$\.png$\.bmp$\.jpg$\.jpeg$]/',$url))`我做错了什么? 最佳答案 当你想要交替时,你正在使用一个字符类......"/\.(gif|png|bmp|jpe?g)$/" 关于php-用于字符串匹配结束的函

php - preg_match_all 如何获得*所有*组合?甚至重叠的

PHP正则表达式函数中是否有一种方法可以获取正则表达式的所有可能匹配项即使这些匹配项重叠?例如获取所有的3位子字符串'/[\d]{3}/'...您可能希望获得:"123456"=>['123','234','345','456']但是preg_match_all()只返回['123','456']这是因为它在匹配的子字符串之后再次开始搜索(如文档中所述):"Afterthefirstmatchisfound,thesubsequentsearchesarecontinuedonfromendofthelastmatch.".有没有不用编写自定义解析器就可以解决这个问题的方法?

php - 从用户输入中获取字母数字字符串的安全方法? (没有 preg_replace)

我读过许多关于如何将字符串过滤为“字母数字”的其他问题,但所有这些问题都建议使用preg_replace()方法。根据OWASP:Functionpreg_replace()shouldnotbeusedwithunsanitiseduserinput,becausethepayloadwillbeeval()’ed13.preg_replace("/.*/e","system(’echo/etc/passwd’)");Reflectionalsocouldhavecodeinjectionflaws.Refertotheappropriatereflectiondocumentati

php - 在 Laravel 验证正则表达式规则中验证纬度/经度 - preg_match() : No ending delimiter '/' found

这个问题在这里已经有了答案:Laravelpreg_match():Noendingdelimiter'/'found(2个答案)关闭5年前。我正在尝试使用自定义正则表达式规则验证Laravel5.4项目中的纬度/经度(基于此答案:https://stackoverflow.com/a/22007205/2332336)//Createvalidation$validator=Validator::make($request->all(),[//...'lat'=>'required|regex:/^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?)$/','