草庐IT

PREG_REPLACE_EVAL

全部标签

php - CodeIgniter form_validation 中的 regex_match 生成 : Message: preg_match(): No ending delimiter '/' found

我一直在寻找其他类似的帖子,问题似乎是一个未转义的斜线。但是我正在逃避他们。字符串应该是这样的: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 - 是否可以在if block 中使用字符串变量作为整个条件(不使用eval())?

作为背景,我正在编写用于解析csv文件并对每个csv文件的每一行执行某些操作的php代码。“内容”取决于行中的值。使用“if”结构测试值很容易,但是,硬编码条件并不是最佳的两个原因:有数百种可能的条件需要测试。这只是开始。将来会增加更多条件。不需要为每个条件测试每个csv行;只要行的条件评估为真,就无需评估其他条件。理想情况下,对于我的情况,“if”条件将存储在postgres表中,一个接一个地放入字符串变量中,然后每个变量将由单个if结构(在某种类型的循环内)进行测试,直到出现一个条件评估为true。简化示例:$arrayOne[3]="foo";//inpractice,theva

php - shell 相当于 php preg_match?

是否有与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

php - preg_match 有字符串大小限制

preg_match在PHP5.2.5上有str的限制 最佳答案 preg_last_error()在第二次调用返回2(=PREG_BACKTRACK_LIMIT_ERROR)之后,您可能希望提高该值。 关于php-preg_match有字符串大小限制,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6173223/

php - 字符串损坏或 preg_match 错误?

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

php - 如果 preg_match 有多个单词

是否可以对多个单词使用带有preg_match的if语句,并在找到所有单词时使条件为真?$line="oneblah,twoblahblahthree";//notworkingcodeif(preg_match('[one|two|three]',$line)){echo"matchedallthree";}else{echo"didn'tmatchallthree";}已经尝试了很多东西,但即使找到一个词也总是满足条件.. 最佳答案 使用积极的前瞻:preg_match("%(?=.*one)(?=.*two)(?=.*thre

PHP preg_replace非贪心麻烦

我一直在使用以下站点来测试PHP正则表达式,因此我不必经常上传:http://www.spaweditor.com/scripts/regex/index.php我正在使用以下正则表达式:/(.*?)\.{3}/在以下字符串上(替换为空):Non-importantdata...importantdata...moreimportantdata并且preg_replace正在返回:moreimportantdata但我希望它返回:importantdata...moreimportantdata我以为?是非贪婪修饰符。这是怎么回事? 最佳答案

PHP 5.4 安装后 : preg_match(): Compilation failed: unknown option bit(s) set at offset 0

我最近在我的LionOSX64位上将我的PHP升级到版本5.4.1,我在Codeigniter中遇到了一个错误:Severity:WarningMessage:preg_match():Compilationfailed:unknownoptionbit(s)setatoffset0Filename:core/Utf8.phpLineNumber:44我用谷歌搜索了这个问题,这似乎是PHP中的PCRE库的问题,我遵循了thistutorial这表明我用自制软件安装了pcre(我正在运行pcre8.30),但这并没有解决问题。我尝试四处寻找解决方案,但没有找到有用的解决方案-是否有解决此

php - 使用 preg_replace 将一个字符的多个实例转换为一个 (aa = a)?

我有一个字符串,我想将多次出现的-转换为一次-。我已经尝试过preg_replace('/--+/g','-',$string)但它什么也没有返回.. 最佳答案 你不应该在模式中使用g,你可以简化你的正则表达式:preg_replace('/-+/','-',$string);不需要反斜杠转义。关于http://ideone.com/IOlpv:输出:asdfsdfd-sdfsdfs-sdf-sdf 关于php-使用preg_replace将一个字符的多个实例转换为一个(aa=a)?,我

php - preg_match 和(非英语)拉丁字符?

我有一个XHTML表单,我要求人们在其中输入他们的全名。然后,我使用以下模式将其与preg_match()匹配:/^[\p{L}\s]+$/在我运行PHP5.2.13(PCRE7.92009-04-11)的本地服务器上,这工作正常。在运行PHP5.2.10(PCRE7.32007-08-28)的虚拟主机上,当输入的字符串包含丹麦拉丁字符ø(http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=%F8&mode=char)时,它不匹配。这是一个错误吗?有变通办法吗?提前致谢! 最佳答案 所以