1

指定されたテキスト内でリンクを検索し、指定したテキストに置き換えるWordPressショートコード(WordPressの部分はそれほど関連性がありません)を作成しようとしています。例えば:

[scode]Click on <a href="www.X.com">this link</a>[scode]
[scode]Click on <a href="www.Y.com">this link</a>[scode]

...次のように変更されます:

[scode]Click on <a href="www.Z.com">this link</a>[scode]

リンクを検索し、指定したリンクに置き換える機能をまとめようとしています。これが私が今持っているものです:

// Adds [hide] shortcode for hiding content from non-registered users.

function hide_text( $atts,$content) {
    if ( is_user_logged_in () ) {
        return $content;
    }
    else {
        $pattern = '(?<=href=("|\'))[^"\']+(?=("|\'))';
        $newurl = "http://replacementurl.com";
        $content = preg_replace($pattern,$newurl,$content);
        echo $content;
          }
    }
add_shortcode( 'hide', 'hide_text' );

ただし、これはサイトをクラッシュさせるだけです。私は PHP の専門家ではありません (ましてや正規表現の専門家ではありません) が、少なくとも私のコードに明らかな不規則性はありますか?

アップデート:

サイトでデバッグを実行したところ、ログから余分なものがあることがわかりました}。現在、サイトはクラッシュしていませんが、エコーされているコンテンツは空白です... 上記のコードが更新されました

4

2 に答える 2

1

http://replcaement url.comこれはスペルが間違っていることは確かです。

;行末にはありません。

ほとんどの場合、正規表現を正しく実行したように見えます。@Akam の回答を見て、いくつかの予約文字をエスケープする必要もあります。

preg の引用符を使用することをお勧めします。

(?<=href=("|'))[^"']+(?=("|'))

正規表現の視覚化

Debuggex でライブ編集

于 2013-09-11T19:37:06.517 に答える