フルコードをご送信いただきありがとうございます。あなたのコンテンツにはHTMLがあるので、これは少し違って処理する必要があります。
まず、コンテンツに/ charが含まれているため、正規表現の区切り記号を変更して干渉しないようにする必要があります。私はそれを%に変更しました。次に、複数行の文字列を使用しているため、改行文字を。(ドット:すべての文字)に含めるように正規表現に修飾語を設定する必要があります。この修飾子は、閉じた区切り文字の後にパターンの最後に 's'を追加することで追加されます。
このコードはテストされ、私のために働いています。
$content = '
<p>[tabs] [tabs_item title="Description"]<br />
Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet<br />
Lorem ipsum dolor sit amet<br />
Lorem ipsum dolor sit amet</p>
<p>[/tabs_item] [tabs_item title="Zwroty"]</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce nec mauris nunc. Vestibulum elit urna, aliquet et urna et, sagittis blandit ligula.</p>
[/tabs_item]
<p>[tabs_item title="Peyment and shipping"]</p>
<p>Lorem ipsum dolor sit amet</p>
<p><b>Lorem ipsum dolor sit amet</b>Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet " <a href="#" target="_blank">url</a>"</p>
<p>[/tabs_item]</p>
<p>[/tabs]</p>';
$pattern = "%\[tabs_item[^\[]+\[/tabs_item\]%s";
$replacement = '';
$out = preg_replace($pattern, $replacement, $content);
echo $out;
結果で:
<p>[tabs]
<p></p>
<p>[/tabs]</p>
は、あなたのフォローアップの質問に答えるために:
[tabs_itemタイトル= "Peymentと配送"] ... [:あなただけの、このタグを削除したい場合
$pattern = '%\[tabs_item title="Peyment and shipping"\][^\[]+\[/tabs_item\]%s';
:あなたがあなたのパターンを変更することができます
/tabs_item]その結果
:
<p>[tabs] [tabs_item title="Description"]<br />
Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet<br />
Lorem ipsum dolor sit amet<br />
Lorem ipsum dolor sit amet</p>
<p>[/tabs_item] [tabs_item title="Zwroty"]</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce nec mauris nunc. Vestibulum elit urna, aliquet et urna et, sagittis blandit ligula.</p>
[/tabs_item]
<p></p>
<p>[/tabs]</p>
あなたは「'あなたの "コード" 修正するために'があります。これらはhtml(ish)テキストの有効な引用符ではありません。あなたのものをワードプロセッサで走らせてはいけません。明日はないようにコードをマングルするでしょう。適切なテキスト/コードエディタを使用してください。 –
あなたのパターンに '[^>] *'を使用する理由は? –
期待される出力は?それは「ここでは別のテキストですか?」ですか? – Andreas