Preg回调问题


Preg Callback Issue

伟大的伴侣。。。我需要你的帮助。。请告诉我为什么这段代码没有进入回调函数。。。

  wppp_content_hook('<p><a href="http://localhost/work/Kate/wp-content/uploads/2011/05/amg_sls_01.jpg"><img width="300" height="250" class="alignleft size-medium wp-image-195" title="amg_sls_0" alt="" src="http://localhost/work/Kate/wp-content/uploads/2011/05/amg_sls_01-300x250.jpg"></a></p>');
  function wppp_content_hook($content) {
    $fileTypes        = array(''.bmp|'.gif|'.jpg|'.jpeg|'.png');
    $pattern          = array();
    $rel              = 'wp-prettyPhoto';
    $pattern[]        = "/<a(.*?)href=('|'")([A-Za-z0-9'/_'.'~':-]*?)($fileTypes)('|'")(.*?)>/i";
    $pattern[]        = "/<a(.*?)href=('|'")([A-Za-z0-9'/_'.'~':-]*?)($fileTypes)('|'")(.*?)(rel=('|'")".$rel."(.*?)('|'"))([ 't'r'n'v'f]*?)((rel=('|'")".$rel."(.*?)('|'"))?)([ 't'r'n'v'f]?)([^'>]*?)>/i";

    return  preg_replace_callback($pattern,'_regexCallback',$content);
  }
  function _regexCallback($matches) {
   echo "<pre>";
    print_r($matches);
   echo "</pre>";  
    global $post;
    $fileTypes        = array(''.bmp|'.gif|'.jpg|'.jpeg|'.png');
    $rel            = 'wp-prettyPhoto';
    $pattern        = array();
    $replacement    = array();
    $pattern[]      = "/<a(.*?)href=('|'")([A-Za-z0-9'/_'.'~':-]*?)($fileTypes)('|'")(.*?)>/i";
    $pattern[]      = "/<a(.*?)href=('|'")([A-Za-z0-9'/_'.'~':-]*?)($fileTypes)('|'")(.*?)(rel=('|'")".$rel."(.*?)('|'"))([ 't'r'n'v'f]*?)((rel=('|'")".$rel."(.*?)('|'"))?)([ 't'r'n'v'f]?)([^'>]*?)>/i";
    $replacement[]  = '<a$1href=$2$3$4$5$6 rel="'.$rel.'[g'.$post->ID.']">';
    $replacement[]  = '<a$1href=$2$3$4$5$6$7>';
    return !strpos($matches['0'], '_blank')? preg_replace($pattern,$replacement,$matches['0']) : $matches['0'];
  }

因为您的$pattern$content 不匹配

通过var_export’ing $pattern 精确查看您的实际regexp

只有当您的内容将由正则表达式匹配时,才会执行回调。没有理由执行回调函数,因为没有匹配项。

实际正则表达式的一部分:([A-Za-z0-9''/_''.''~'':-]*?)(Array)

似乎不想要的"阵列"潜入了你的模式(两者都有)。