杨莹莹连 发表于 2013-11-08 20:20:58

沙盘引擎正则抒发式调剂小技巧

  很久没有遇上PHP难点了,这次正则成绩占了小半工夫,还是老成绩最大回溯、递归制约成绩。进修透以后实在并没有难修正调剂有这类成绩的正则。次要是以次多少点。

  基于正则抒发式交换的沙盘引擎很简单遇上正则抒发式最大回溯/递归的制约。

  惰性婚配并没有可怜,畸形状况下沙盘并没有会没有够用,常常没有会超过制约,discuz的沙盘引擎就少量运用了。然而因而而没有离开意、没有去进修,则简单书写谬误并遇上成绩。

  当preg_*前往的是null的时分则要留意了,判别因变量是is_null.

  出错并没有可怜,然而最好把谬误都完好的输入,那样调剂就很简单了。

  除非输入出错缘由,还要输入婚配的文本和运用的正则,那样就很简单调剂了。

  PHP代码

  if(is_null($tmp)){

  $error_code=preg_last_error();

  switch($error_code){

  casePREG_NO_ERROR:

  echo\'PREG_NO_ERROR\';

  break;

  casePREG_INTERNAL_ERROR:

  echo\'PREG_INTERNAL_ERROR\';

  break;

  casePREG_BACKTRACK_LIMIT_ERROR:

  echo\'PREG_BACKTRACK_LIMIT_ERROR\';

  break;

  casePREG_RECURSION_LIMIT_ERROR:

  echo\'PREG_RECURSION_LIMIT_ERROR\';

  break;

  casePREG_BAD_UTF8_ERROR:

  echo\'PREG_BAD_UTF8_ERROR\';

  break;

  casePREG_BAD_UTF8_OFFSET_ERROR:

  echo\'PREG_BAD_UTF8_OFFSET_ERROR\';

  break;

  default:

  echo\'UNKNOWERROR\';

  

  exit;

  }

  参考材料

  1、2010, Laruence 《深悉正则(pcre)最大回溯/递归制约》

  2、2011, PHP中文画册 preg_last_error

                 

}

店小二 发表于 2026-02-05 05:09:43

这个分享太实用了,刚好能用到,感谢楼主!

forex001 发表于 2026-02-27 10:29:22

这个思路很新颖,打开了新世界的大门,谢谢分享

嘿嘿 发表于 2026-03-30 00:15:00

楼主太厉害了,整理得这么详细,必须支持
页: [1]
查看完整版本: 沙盘引擎正则抒发式调剂小技巧