我不擅长正则表达式,所以我什至不知道这个到底是做什么的:echopreg_match('/^(([a-zA-Z0-9\x2d]{1,63}\x2e)*[a-zA-Z0-9\x2d]{1,63}){1,254}$/','example12345678.com>');我从旧版本的ZendFramework-1.5中获取它,它已经过时并且在框架的最后一个稳定版本中不再显示此正则表达式。然而,它的行为很奇怪,因为我在官方php资源中没有找到文档解释或向后不兼容说明。问题是在php5.2.*上它工作正常:返回0。在php5.3.10、5.4.0(最有可能是5.3.、5.4.我想)它返回FALSE
我写了正则表达式^(?:([1-5])|([1-5]).*|.*([1-5])|.*([1-5]).*)$以匹配独立数字1-5,或由至少一个空格分隔的数字构成字符串的其余部分。我已经在在线服务中对其进行了测试,结果就是数字本身。但是,使用代码时preg_match('/^(?:([1-5])|([1-5]).*|.*([1-5])|.*([1-5]).*)$/','order123141245',$matches);我明白了:Array([0]=>order123141245[1]=>[2]=>[3]=>5)[0]元素是一个很好的完全匹配。我预计[1]元素为5但它是空的,并且还有另一个
如果我有这些字符串:$string1="Thisbookcosts€25.99inourshop."另一边$string2="Thisbookcosts25,99€inourshop."如何使用preg_match获得“€25.99”或“25,99€”?代码会是什么样子?请注意,有两种写欧元符号的方法。在欧盟,正确的方法是在数字后面写符号,例如25,99€,并使用逗号作为小数分隔符。然而,很多美国人都坚持使用美元方式(€25.99)和点作为小数点分隔符。如何对这两种情况进行检查并以最干净、最有效的方式获取带符号的值? 最佳答案 这是
我在PHP应用程序中有一些代码,当我尝试在生产服务器上使用它时返回null,但它在开发服务器上运行良好。这是代码行://usetheregexunicodesupporttoseparatetheUTF-8charactersintoanarraypreg_match_all('/./us',$str,$match);u标志依赖于什么?我在启用和禁用mb_string的情况下进行了测试,它似乎没有影响它。我得到的错误是preg_match_all:编译失败:在偏移量-1处设置了未知选项位更多信息这是生产服务器上的选项之一:'--with-pcre-regex=/opt/pcre'这里是
我一直在寻找其他类似的帖子,问题似乎是一个未转义的斜线。但是我正在逃避他们。字符串应该是这样的:23/12/2012这就是我声明验证规则的方式:regex_match[/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)[0-9]{2}$/]结束分隔符在那里,日期的两个中间斜杠用反斜杠转义。我也试过这个略有不同,但我得到了同样的错误:regex_match[/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)\d\d$/]哪里出错了?编辑:按照您的建议,我尝试使用回调函数。这是声明,
是否有与PHP的preg_match等效的shell?我正在尝试从shell脚本中的这个字符串中提取数据库名称。define('DB_NAME','somedb');在PHP中使用preg_match我可以做这样的事情。preg_match('define(\'DB_NAME\','(.*)'\'\)',$matches);echo$matches[1];我怎样才能在shell脚本中完成同样的事情? 最佳答案 使用expr可以准确回答问题:exprmatch"string""regexp"因此,根据您的需要,您可以这样写:exprm
preg_match在PHP5.2.5上有str的限制 最佳答案 preg_last_error()在第二次调用返回2(=PREG_BACKTRACK_LIMIT_ERROR)之后,您可能希望提高该值。 关于php-preg_match有字符串大小限制,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6173223/
NO-BREAKSPACE和许多其他UTF-8符号need2bytestoitsrepresentation;因此,在假定的UTF8字符串上下文中,非ASCII(>127)的孤立(不以xC2开头)字节是无法识别的字符……好吧,这只是布局问题(!),但是它破坏了整个字符串?如何避免这种“非预期行为”?(它occursinsomefunctionsandnotinothers)。示例(仅使用preg_match生成非预期行为):header("Content-Type:text/plain;charset=utf-8");//sameiftext/html//PHPVersion5.5.4
是否可以对多个单词使用带有preg_match的if语句,并在找到所有单词时使条件为真?$line="oneblah,twoblahblahthree";//notworkingcodeif(preg_match('[one|two|three]',$line)){echo"matchedallthree";}else{echo"didn'tmatchallthree";}已经尝试了很多东西,但即使找到一个词也总是满足条件.. 最佳答案 使用积极的前瞻:preg_match("%(?=.*one)(?=.*two)(?=.*thre
我最近在我的LionOSX64位上将我的PHP升级到版本5.4.1,我在Codeigniter中遇到了一个错误:Severity:WarningMessage:preg_match():Compilationfailed:unknownoptionbit(s)setatoffset0Filename:core/Utf8.phpLineNumber:44我用谷歌搜索了这个问题,这似乎是PHP中的PCRE库的问题,我遵循了thistutorial这表明我用自制软件安装了pcre(我正在运行pcre8.30),但这并没有解决问题。我尝试四处寻找解决方案,但没有找到有用的解决方案-是否有解决此