可能的重复项:
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>
preg_replace("/'[lang_en](.*?)'['/lang_en]/s", '', $text);
^ ^
lazy |
'.' matches newlines as well
在这里进行简单的测试。