1

とを使用して2つの特別なタグの間の文字列をデコードしようとしてhtmlspecialchars_decodepreg_replaceます。たとえば、元の文字列は次のようになります。

other strings...[link]<a href="http://example.com" target="_blank">example</a>[/link]other strings...

[link][/link]間のすべてをhtmlの元のコードに変換する必要があります。これをテストしました:

    $str = preg_replace("/[link](.*)[\/link]/eisU", "htmlspecialchars_decode('$1')", $str);                 

うまくいきませんでした!私もグーグルとSOを検索しましたが、役に立たなかったです!

4

1 に答える 1

2

角括弧をエスケープする必要があります。エスケープしない[link]と、文字で構成される文字セットと解釈されl, i, n, kます。

preg_quote()何をエスケープすればよいかわからない場合は、次を使用する必要があります。

preg_replace('/' . preg_quote('[link]', '/') . '(.*?)' . preg_quote('[/link]', '/') . '/eisU', ...

これも行います:

/\[link\](.*)\[\/link\]/eisU
于 2012-06-13T08:23:31.373 に答える