2010-11-25 17 views
0

私は単純な質問のように思われる答えを探しましたが、役に立たないです。php:コンテナ内のテキストをlinkに置き換えます。 preg_replace?

私はいくつかのHTML出力、例えば持っている:それは投稿しますので、それぞれ

<div id="attachment_1098" class="wp-caption alignleft" style="width: 160px">[[ a href="mydomain.com/wp-content/uploads/2010/11/photo-1.jpg" ]][[img class="size-thumbnail wp-image-1098" title="John Doe" src="mydomain.com/wp-content/uploads/2010/11/photo-1.jpg" alt="John Doe" width="150" height="200" /]][[ /a ]]<p class="wp-caption-text">John Doe</p></div> 
<div id="attachment_1080" class="wp-caption alignleft" style="width: 160px">[[ a href="mydomain.com/wp-content/uploads/2010/11/photo-2.jpg" ]][[img class="size-thumbnail wp-image-1080" title="Fred Bloggs" src="mydomain.com/wp-content/uploads/2010/11/photo-1.jpg" alt="Fred Bloggs" width="150" height="200" /]][[ /a ]]<p class="wp-caption-text">Fred Bloggs</p></div> 
<div id="attachment_1099" class="wp-caption alignleft" style="width: 160px">[[ a href="mydomain.com/wp-content/uploads/2010/11/photo-3.jpg" ]][[img class="size-thumbnail wp-image-1099" title="Jane Doe" src="mydomain.com/wp-content/uploads/2010/11/photo-3.jpg" alt="Jane Doe" width="150" height="200" /]][[ /a ]]<p class="wp-caption-text">Jane Doe</p></div> 
<div id="attachment_1096" class="wp-caption alignleft" style="width: 160px">[[ a href="mydomain.com/wp-content/uploads/2010/11/photo-4.jpg" ]][[img class="size-thumbnail wp-image-1096" title="Joe Public" src="mydomain.com/wp-content/uploads/2010/11/photo-4.jpg" alt="Joe Public" width="150" height="200" /]][[ /a ]]<p class="wp-caption-text">Joe Public</p></div> 

(上記のhtmlが実際にうまく形成され、< &を交換しなければならなかった> anchoursやイメージで[[と]]とします。)

私は、「WP-キャプションテキスト」のクラスにそれぞれのテキストコンテンツ(P)の周りのリンクをラップしたい、のURLは次の形式にする必要があります

'/my-page-root/'.strtolower(str_replace(' ','-',$linkText)).''; 

(そうジョン・ドウがリンクになりますなど/私のページ-ルート/ジョン・-DOE

今、私はにpreg_replaceで、これまで持っているが、私はどのように把握することはできません逆参照からリンクURLを作成します。これは私がそれを行う簡単な方法がなければならないと思わせる

とにかく

、ここで私は立ち上がったコードだ(そしておそらくより速い方法は?):空のanchourでテキストを置き換え

<?php $contentLinked = preg_replace("/(<p class=\"wp-caption-text\">.*<\/p>)/Us", "<p class=\"wp-caption-text\"><a href=\"\">$1</a></p>",$content); ?> 

は、ちょうど良い、私はリンクのURLを作成するために逆参照を使用する方法に立ち往生しています。

いくつかの注意

リンクは

(以降のみ上のテキストの一部をラップする必要があるかもしれませんが、私はそれに来るとき、私はその橋を渡ります)テキストをラップする必要があります

Wordpressはこれをwysiwyg経由で許可しません。これは、リンクをはがすのを防ぐための回避策ではありません。他の誰かが来て、フォーマットを壊してしまいます(したがって、ハードコーディング)。画像上のリンクはとてもリンクで画像全体および/またはDIVをラップする、(jqueryのギャラリーが起こっている)、フルサイズの画像に残っている必要があります

はあなたが与えることができる任意の助け

乾杯のオプションではありません私。

アンディは

答えて

0

私はあなたがそれを後方参照に保存するために括弧内(テキスト)を合わせたい部分を配置する必要があると思います。このように:

<?php $contentLinked = preg_replace("/(<p class=\"wp-caption-text\">(.*)<\/p>)/Us", "<p class=\"wp-caption-text\"><a href=\"\">$1</a></p>",$content); ?> 
+0

ああ、もちろん、良いキャッチジョーディ。どのように私は今正しいbackreferenceを使用してURLを形成することができる任意のアイデア?乾杯 – Andyh

0

私はそれをしました!

元の欠陥を発見したJordiに感謝します。それ以外の場合誰に

私が代わりに)preg_replace_callbackを(使用に向けて私をリードし、このcalling function inside preg_replace thats inside a function

を発見した(、前にそれを使ったことがない原因を持っていなかった)

は、同様の問題を抱えている、私の結果のコードは次のようになりますそう:

<?php $contentLinked = preg_replace_callback("/<p class=\"wp-caption-text\">(.*)<\/p>/Us", 'myCallback',$content);?> 

と機能:

<?php 
function myCallback($match){ 

     return '<a href="'.strtolower(str_replace(' ','-',$match[1])).'">'.$match[1].'</a>'; 

    } 
?> 
関連する問題