-3

重複の可能性:
PHP 正規表現 BBCode タグ間のテキストを取得

次のようなテキストがあります。

[lang_de]ドイツ語のコンテンツ[/lang_de][lang_en]英語のコンテンツ[/lang_en]。

開始言語タグと終了言語タグの間[lang_en]およびそれらを含むすべてのテキストを置き換えたいです。[/lang_en]

これは私の現在の正規表現です:

UPDATE wp_posts SET post_content = '" . addslashes(preg_replace("/[lang_en](.*)[\/lang_en]/", '', $row['post_content'])) . "' WHERE ID = " . $row['ID']

この正規表現では、有効な結果が得られません。また、htmlタグなどに置き換えます。

正しい正規表現は何でしょうか?

これはテキストの例です:

[lang_de]
<!--more-->
<div class="s-desc">
<br/>
Länge: 3:50 min | Tempo: 125 bpm
<p>
Text<br/>
</p>
<p>
<a href="#">LoFi-Version zum Testeinsatz in Ihrem Projekt hier downloaden</a>.     (Rechstklick-->Ziel speichern unter...)<br/>
Die Nutzung dieser LoFi-Version ist ausschließlich für Testzwecke erlaubt!
</p>
</div>
[/lang_de]


[lang_en]<!--more-->
<div class="s-desc">
<br/>
Length: 3:50 min | Tempo: 125 bpm
<p>
Text<br/>
</p>
<p>
<a href="#">Download a lofi-version to test with your project here</a>. (right-click-->save target as...)<br/>
The usage of this lofi-version is permitted for testing purposes only!
</p>
</div>
[/lang_en]

結果は次のようになります。

<!--more-->
<div class="s-desc">
<br/>
Länge: 3:50 min | Tempo: 125 bpm
<p>
Text<br/>
</p>
<p>
<a href="#">LoFi-Version zum Testeinsatz in Ihrem Projekt hier downloaden</a>.     (Rechstklick-->Ziel speichern unter...)<br/>
Die Nutzung dieser LoFi-Version ist ausschließlich für Testzwecke erlaubt!
</p>
</div>
4

1 に答える 1

-1
preg_replace("/\[lang_en](.*?)\[\/lang_en]/s", '', $text);
                            ^              ^
                          lazy             |
                                   '.' matches newlines as well

ここで簡単なテスト。

于 2012-06-30T15:15:41.710 に答える