0

hrefを置き換えようとしていますが、次のコードがあります。<a href="http://www.mysite.com" target="_blank">My site</a>

それと :

$textarea_content = '<a href="http://www.mysite.com" target="_blank">My site</a>';
$patterns = array(
    "/<a href=/",
    "/target*\=*\'*\_blank*\'*\>/",
    "/<*\/a>/"
);
$replacements = array(
    "[url=",
    "]",
    "[/url]"
);
$textarea_content = preg_replace($patterns,$replacements, $textarea_content);

リンクタグをこの構造に変換する必要があります:

[url='http://www.mysite.com']My site[/url]

問題は、出力が次のようなものになることです。<a href="" http:="" www.mysite.com''="" target="_blank">My site</a>

私が間違っているのは何ですか?手伝ってくれてありがとう!

4

1 に答える 1

1
echo preg_replace('/(?:\<a\s+.*href=\"([^\"]*)"[^\>]*\>([^\<]*)\<\/a\>)/', '[url=\'\\1\']\\2[/url]', $text);

仮定:

$text = 'Bla bla bla <a href="http://www.mysite.com" target="_blank">My site</a> bla bla bla';

結果:

Bla bla bla [url='http://www.mysite.com']My site[/url] bla bla bla

以下のOPのコメントによると編集:

HTMLを取り戻したい場合は、次のようにする必要があります。

echo preg_replace('/(?:\[url=\'([^\']*)\'\]([^\[]*)\[\/url\])/', '<a href="\\1" target="_blank">\\2</a>', $parsed);

仮定:

$parsed = 'Bla bla bla [url=\'http://www.mysite.com\']My site[/url] bla bla bla';

結果:

Bla bla bla <a href="http://www.mysite.com" target="_blank">My site</a> bla bla bla
于 2012-10-26T07:21:13.997 に答える