0

素晴らしい仲間...私はあなたの助けが必要です..なぜこのコードがコールバック関数に入らないのか教えてください...

  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'];
  }
4

1 に答える 1

0

お似合い$patternじゃないから$content

var_export'ingによって実際の正規表現を正確に見てください$pattern

コールバックは、コンテンツが正規表現と一致する場合にのみ実行されます。一致するものがないため、コールバック関数を実行する理由はありません。

実際の正規表現の一部: ([A-Za-z0-9\\/_\\.\\~\\:-]*?)(Array)

望ましくない「配列」があなたのパターンに忍び込んだようです(両方とも)。

于 2011-05-30T14:51:00.473 に答える