Vielen Dank für das Posten des vollständigen Codes. Dies muss etwas anders gehandhabt werden, da HTML in Ihrem Inhalt vorhanden ist.
Erstens, weil Ihr Inhalt das/char enthält, müssen wir das Regex-Trennzeichen zu etwas anderem ändern, damit es nicht stört. Ich habe es in% geändert. Da Sie eine mehrzeilige Zeichenfolge verwenden, müssen Sie als Nächstes einen Modifikator für die Regex festlegen, um Zeilenumbrüche in die Zeichenfolge ".dot: all chars" einzufügen. Dieser Modifikator wird hinzugefügt, indem Sie nach dem abschließenden Begrenzer das 's' am Ende des Musters hinzufügen.
Dieser Code ist getestet und funktionierte für mich.
$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;
Ergebnisse in:
<p>[tabs]
<p></p>
<p>[/tabs]</p>
Ihre followup Frage beantworten:
[tabs_item title = "peyment und Versand"] ... [: Wenn Sie nur diesen Tag entfernen mögen/tabs_item]
Sie Ihr Muster ändern können:
$pattern = '%\[tabs_item title="Peyment and shipping"\][^\[]+\[/tabs_item\]%s';
was zur Folge hat:
<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>
Sie haben '“ 'in Ihrem "Code zu beheben". Dies sind keine gültigen Anführungszeichen für HTML-Text (ish). Lass deine Sachen nicht durch einen Textverarbeitungsprozessor laufen - es wird Code durchgehen, als gäbe es kein Morgen. Verwenden Sie einen geeigneten Text/Code-Editor. –
Warum verwenden Sie '[^>] *' in Ihrem Muster? –
Was ist Ihre erwartete Ausgabe? Ist es "ein anderer Text hier ..."? – Andreas