指定されたテキスト内でリンクを検索し、指定したテキストに置き換える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 の専門家ではありません (ましてや正規表現の専門家ではありません) が、少なくとも私のコードに明らかな不規則性はありますか?
アップデート:
サイトでデバッグを実行したところ、ログから余分なものがあることがわかりました}
。現在、サイトはクラッシュしていませんが、エコーされているコンテンツは空白です... 上記のコードが更新されました