2012-03-03 5 views
0

Wordpressのメインコンテンツ内のすべての画像の後に画像のURLを表示しようとしています。これを行うには、私はプラグインを構築しています。Wordpressで画像を表示した後の画像URLを追加

プラグイン内に次のコードを追加すると、同じImageを2つ表示できます。画像を表示するコードは$ 1に格納されています。

私がする必要があるのは、上記のコードで$ 1の2番目のインスタンスをハックしてイメージsrcを削除するだけです。以下は、私が試したコードですが、substrとstrpos関数を使用していますが、それは私にとってはうまくいかないようです。

$content = preg_replace("/(<img([^>]*)>)/i", 
    "<div class=\"image_wrap\">$1<div class=\"linkbox\">" . 
    substr(substr("$1", strpos("$1","src=\"")+5), 0,strpos(substr("$1",strpos("$1","src=\"")+5),"\"")) . 
</div></div>", $content); 

これは明らかに間違っていますか?

おかげ

+0

にマリオのおかげで考え出したソリューションです。/q/3820666/367456)。また、あなたが求める本当の質問でもありません。 – hakre

+0

マッチ後に文字列のパッチ式を評価しようとすると、それらを 'preg_replace_callback'関数で使用したはずです。あなたが今書きましたように、 '' $ 1 ''が存在する前に実行されます。 – mario

+0

@mario - preg_replace_callbackものを見つけることができません。関連するサンプルコードはありますか? –

答えて

0

は私が最終的にははいあり、[要素のhref属性をつかむ]を参照してください(http://stackoverflow.com上記のコメント

$content = preg_replace_callback(
     '/(<img([^>]*)>)/i', 
     create_function(
      '$matches', 
      'return CREDIT_HEAD . 
      "<div class=\"image_wrap\">$matches[0]<div class=\"linkbox\">" . 
         substr(substr("$matches[0]", strpos("$matches[0]","src=\"")+5), 0,strpos(substr("$matches[0]", strpos("$matches[0]","src=\"")+5),"\"")) . 
        "</div></div>" . 
        CREDIT_FOOT;' 
     ), 
     $content); 
0

マニュアルのpreg_replace_callbackのための例があります。これは通常次のようになります。

$content = preg_replace_callback(
     "/(<img([^>]*)>)/i", 
     "cb_image_wrap", 
     $content 
); 

function cb_image_wrap($match) { 

    list($all, $img, $attr) = $match; 

    return 
     "<div class=\"image_wrap\">$img<div class=\"linkbox\">" . 
     substr(substr("$img", strpos("$img","src=\"")+5), 0, 
     strpos(substr("$img",strpos("$img","src=\"")+5),"\"")) . 
     "</div></div>"; 
} 

文字列のパッチコードが不必要に複雑に見えます。

HEREDOC個の文字列を調べることもできます。ここで

関連する問題