Autor |
Nachricht |
marcusm
Threadersteller
Dabei seit: 06.05.2002
Ort: europa
Alter: 46
Geschlecht:
|
Verfasst Mi 01.08.2007 17:16
Titel PHP Tags ersetzen |
|
|
Hallo zusammen,
ganz so einfach ist es wohl nicht wie der Titel vermuten läßt. Ich möchte gerne per ereg_replace()
aus einem String Zeichenketten wie zum Beispiel:
Code: | %%%<block::sub::single>%%%
<html-tags>Text</html-tags>
%%%</block::sub::single>%%% |
entfernen.
Irgendwie hab ich gerade nen gesamten Wald vor dem Kopf...
Mein Versuch sieht bisher so aus:
Code: | $muster='/%%%<'.$value[1].'>%%%(.*?)%%%</'.$value[1].'>%%%/';
$content_template=ereg_replace($muster, "", $content_template); |
In $value[1] steht dann natürlich block::sub::single
Mein Versuch wird vom Parser mit "Warning: ereg_replace(): REG_BADRPT ..." quittiert.
Kann jemand helfen?
Danke
Marcus
|
|
|
|
|
kaputt
Dabei seit: 08.05.2003
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 01.08.2007 17:36
Titel
|
|
|
$bla = str_replace('%%%<', '', $orig_string);
$bla = str_replace('%%%>', '', $orig_string);
?
|
|
|
|
|
Anzeige
|
|
|
marcusm
Threadersteller
Dabei seit: 06.05.2002
Ort: europa
Alter: 46
Geschlecht:
|
Verfasst Mi 01.08.2007 17:53
Titel
|
|
|
Hi peBBo,
das nutzt mir leider überhaupt nicht, das wäre auch kein Problem gewesen. Du entfernst so ja lediglich die "Einfassungs-Tags" des Blocks und läßt alles was zwischen steht außer acht. Das sollte natürlich mit entfernt werden.
Also am Beispiel erklärt machste aus:
Code: | %%%<html-tag>%%% Hier steht <strong>fetter</strong> Text %%%</html-tag>%%% |
dann das hier:
Code: | Hier steht <strong>fetter</strong> Text |
Hilft mir also leider nicht weiter, trotzdem Danke...
Zuletzt bearbeitet von marcusm am Mi 01.08.2007 17:54, insgesamt 1-mal bearbeitet
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 01.08.2007 18:12
Titel
|
|
|
Ich verstehe gerade nicht was du erreichen willst, erklär das auch mal an
einem Beispiel bitte.
Zuletzt bearbeitet von m am Mi 01.08.2007 18:20, insgesamt 1-mal bearbeitet
|
|
|
|
|
marcusm
Threadersteller
Dabei seit: 06.05.2002
Ort: europa
Alter: 46
Geschlecht:
|
Verfasst Mi 01.08.2007 18:40
Titel
|
|
|
Einfach erklärt möchte ich eine variable Zeichenkette mitsamt den umklammernden Markern entfernen.
Es ist ein kleines Template-Systemchen das ein HTML-Template nach meinen Markern durchsucht und wenn entsprechende Inhalte vorhanden sind und ersetzt. Die Marker ersetzen praktisch Divs mit darin liegenden Elementen.
Das ganze läuft als Schleife (foreach), in der vorweg gesuchte und in einem Array gespeicherte Marker durchlaufen werden. In der Schleife gibts ne if/else Struktur die prüft ob zum aktuellen Marker Content vorhanden ist, falls nicht,
soll dieser Marker-Block der so aussehen kann:
Code: | %%%<vorname_block::sub::single>%%%
<label for="input_vorname"></label><br />
%%%</vorname_block::sub::single>%%% |
gelöscht werden.
Die Marker mit %%% vorne und hinten bilden den Block der ggf. durch div-Tags ersetzt wird und zwischen diesen kann dann alles mögliche stehen.
Mein Problem ist der reguläre Ausdruck, der es mir ermöglicht diesen Block mit flexiblen Inhalt, z.B. verschiedene unbekannte Label-tags oder Texte etc. durch nichts "" zu ersetzen, quasi zu löschen.
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 01.08.2007 23:21
Titel
|
|
|
Reguläre Ausdrücke sind auch nicht so mein Ding, aber so sollte es doch eigentlich funktionieren:
Code: | $block = "%%%<vorname_block::sub::single>%%%<label for=\"input_vorname\"></label><br />%%%</vorname_block::sub::single>%%%";
echo preg_replace("/%%%(.*)%%%/", '', $block); |
Keine Ahnung ob das eine gute Lösung ist oder ob man es viel besser machen kann.
|
|
|
|
|
marcusm
Threadersteller
Dabei seit: 06.05.2002
Ort: europa
Alter: 46
Geschlecht:
|
Verfasst Do 02.08.2007 00:27
Titel
|
|
|
Dank Dir m für Deine Mühen...
Allerdings funktioniert der Code so nicht. Da fehlt ein Fragezeichen:
Code: | preg_replace("/%%%(.*?)%%%/", '', $block); |
Nun entfernt er zwar die Marker die den Block selbst bilden aber alles zwischen den beiden Markern bleibt stehen.
Habe die Lösung gerade selber gefunden, ist zwar wie wenn der Zahnarzt durch den Hintern durch Zähne zieht,
aber es funktioniert einwandfrei!
Code: | $startmuster="%%%<block>%%%";
$endmuster="%%%</block>%%%";
$start_pos=strpos($content_template, $startmuster);
$end_pos=strpos($content_template, $endmuster);
$laenge=$end_pos - $start_pos + strlen($endmuster);
$content_template=substr_replace($content_template, "", $start_pos, $laenge); |
Einen regulären Ausdruck hätte ich eleganter gefunden, aber was solls...
Dank Euch
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Do 02.08.2007 02:53
Titel
|
|
|
geht nicht nur mit regex. (übrigens ist die syntax da grauenhaft). Du musst n Tokenizer schreiben. Schau dir mal das Ergebnis von der Funktion parse_into_struct() an, dann weißte was ich mein'. Sobald Verschachtelungen geparst werden, kommste "nur" mit regex nicht weiter.
|
|
|
|
|
|
|
|
Ähnliche Themen |
Was für ein Editor um Tags über mehrere Zeilen ersetzen?
Fragen zu Alt-Tags...
[HTML] Div-Tags
Was ist so toll an DIV-Tags?
Editor-Tags
TH Tags in Dreamweaver MX
|
|