Regulärer Ausdruck
Viennamade
- php
Hallo!
Vorweg, mit Regulären Ausdrücken beschäftige ich mich erst seit ein paar Stunden, daher ist mein Problem wahrscheinlich einfach.
Folgender HTML-Quelltext (die Rem-Zeilen sind relevant):
<!-- NavigationAnfang-->
...
<!-- NavigationEnde-->
So der ganze Seiteninhalt steht in $inhalt und von da will ich ihn raus haben. Mein Versuch
echo preg_replace("^<!-- NavigationAnfang-->(.*).<!-- NavigationEnde-->$", '', $inhalt);
wir vom PHP mit 'Warning: No ending delimiter '^' found in search.php on line 62' kommentiert.
Bitte um Hilfe.
Viennamade
Halihallo Viennamade
Folgender HTML-Quelltext (die Rem-Zeilen sind relevant):
Das sind Kommentare :-)
REM gibt's nur bei BASIC und im Schlaf ;-)
So der ganze Seiteninhalt steht in $inhalt und von da will ich ihn raus haben. Mein Versuch
Äm. Mit untenstehender Regular Expression entfernst du lediglich die
ganze "Navigation", wenn ich den Kontext richtig deute. Ist das
gewollt, ja?
echo preg_replace("^<!-- NavigationAnfang-->(.*).<!-- NavigationEnde-->$", '', $inhalt);
http://www.php.net/pregreplace
Suchmuster werden zwischen '/' definiert!
wir vom PHP mit 'Warning: No ending delimiter '^' found in search.php on line 62' kommentiert.
Wahrscheinlich hängts an den fehlenden '/'s.
Viele Grüsse
Philipp
Hi,
http://www.php.net/pregreplace
Suchmuster werden zwischen '/' definiert!
Nein. Suchmuster können zwischen / definiert werden.
Es ist aber so, daß schlicht und einfach das erste Zeichen als Begrenzer benutzt wird.
wir vom PHP mit 'Warning: No ending delimiter '^' found in search.php on line 62' kommentiert.
Eben deswegen wird das fehlende ^ bemängelt - ^ ist das erste Zeichen, also wird es als Begrenzer genommen.
Lösung: Begrenzer-Zeichen einfügen.
cu,
Andreas
Hallo!
http://www.php.net/pregreplace
Suchmuster werden zwischen '/' definiert!Nein. Suchmuster können zwischen / definiert werden.
Es ist aber so, daß schlicht und einfach das erste Zeichen als Begrenzer benutzt wird.
wir vom PHP mit 'Warning: No ending delimiter '^' found in search.php on line 62' kommentiert.
Eben deswegen wird das fehlende ^ bemängelt - ^ ist das erste Zeichen, also wird es als Begrenzer genommen.
Lösung: Begrenzer-Zeichen einfügen.
Ich habe die angezeigten Begrenzungszeichen eingefügt, aber falsch, ich erhalte jetzt 'Warning: No ending delimiter '^' found in search.php on line 62'
$inhalt = preg_replace("^/<!-- NavigationAnfang-->/(.*)./<!-- NavigationEnde-->/$", '', $inhalt);
^ ^ ^ ^
:-( (Ich weiß, das ist eine schwere Geburt)
Viennamade
Hallo Viennamade,
Ich habe die angezeigten Begrenzungszeichen eingefügt, aber
falsch, ich erhalte jetzt 'Warning: No ending delimiter '^' found
in search.php on line 62'
Lies doch einfach mal das Manual, Mensch ;-)
$inhalt = preg_replace("^/<!-- NavigationAnfang-->/(.*)./<!-- NavigationEnde-->/$", '', $inhalt);
$inhalt = preg_replace("/^<!-- NavigationAnfang-->(.*).<!-- NavigationEnde-->$/", '', $inhalt);
Grüße,
CK
Hi,
$inhalt = preg_replace("^/<!-- NavigationAnfang-->/(.*)./<!-- NavigationEnde-->/$", '', $inhalt);
Die gehören ja auch nicht mitten in den Regulären ausdruck, sondern vor dessen Anfang und nach dessen Ende.
Darum heißen sie ja auch Begrenzer und nicht Mittendrinner ;-)
cu,
Andreas
Halihallo Viennamade
Nein. Suchmuster können zwischen / definiert werden.
Es ist aber so, daß schlicht und einfach das erste Zeichen als Begrenzer benutzt wird.
Danke, MudGuard.
Ich habe die angezeigten Begrenzungszeichen eingefügt, aber falsch, ich erhalte jetzt 'Warning: No ending delimiter '^' found in search.php on line 62'
Du hast sie falsch eingesetzt, sieh dir doch mal die Beispiele auf
php.net an.
$inhalt = preg_replace("^/<!-- NavigationAnfang-->/(.*)./<!-- NavigationEnde-->/$", '', $inhalt);
"/^<!-- NavigationAnfang-->(.*).<!-- NavigationEnde-->$/"
einfach _ganz_ am Anfang ein '/' und _ganz_ am Ende ein '/'.
Ansonsten wie gehabt...
:-( (Ich weiß, das ist eine schwere Geburt)
Die Mamma wird's überleben ;-)
Viele Grüsse
Philipp
Hallo liebe Forumer!
Zuerstmal ein zwischenzeitliches Danke für Eure Unterstützung.
Du hast sie falsch eingesetzt, sieh dir doch mal die Beispiele auf
php.net an.einfach _ganz_ am Anfang ein '/' und _ganz_ am Ende ein '/'.
Ansonsten wie gehabt...
Zwischenzeitlich deshalb weil ich es noch immer nicht hinbekomme ..., trotz
$inhalt = preg_replace("/^<!-- NavigationAnfang-->(.*).<!-- NavigationEnde-->$/", '', $inhalt);
wird aus $inhalt (s. unten) nicht das Gewünschte rausgeschnitten.
Beste Grüße
Viennamade
...
<body>
<!-- NavigationAnfang-->
<div id="navig" class="black"><img id="x6bgif" src="graphics/x6b.gif" title="" alt="" /><ul>
<li><form id="languageform" action="/neu/search.php" method="post"><div><input type="image" src="graphics/x5a.gif" /></div></form></li>
<li><a onmouseover="menho(this,'x62.gif')" onmouseout="menho(this,'x61.gif')" id="linkx61" href="index.php"><img id="x61gif" src="graphics/x61.gif" title="Home" alt="Home" /></a></li>
<li><a onmouseover="menho(this,'x5e.gif')" onmouseout="menho(this,'x5d.gif')" id="linkx5d" href="cooperate.php"><img id="x5dgif" src="graphics/x5d.gif" title="" alt="" /></a></li>
<li><a onmouseover="menho(this,'x66.gif')" onmouseout="menho(this,'x65.gif')" id="linkx65" href="illumination.php"><img id="x65gif" src="graphics/x65.gif" title="" alt="" /></a></li>
<li><a onmouseover="menho(this,'x64.gif')" onmouseout="menho(this,'x63.gif')" id="linkx63" href="faq.php"><img id="x63gif" src="graphics/x63.gif" title="" alt="" /></a></li>
<li><a onmouseover="menho(this,'x60.gif')" onmouseout="menho(this,'x5f.gif')" id="linkx5f" href="contact.php"><img id="x5fgif" src="graphics/x5f.gif" title="" alt="" /></a></li>
<li><a onmouseover="menho(this,'x91.gif')" onmouseout="menho(this,'x90.gif')" id="linkx90" href="downloads.php"><img id="x90gif" src="graphics/x90.gif" title="" alt="" /></a></li>
<li><form id="formsearchblack" action="search.php" method="post"><ul><li><input type="image" id="search" onmouseover="menho(this,'x68.gif')" onmouseout="menho(this,'x67.gif')" src="graphics/x67.gif" /></li><li><input id="searchvalues" name="searchvalues" size="20" type="text" maxlength="20" /></li></ul></form></li>
</ul>
</div>
<!-- NavigationEnde-->
<h2>...
Halihallo Viennamade
Zwischenzeitlich deshalb weil ich es noch immer nicht hinbekomme ..., trotz
$inhalt = preg_replace("/^<!-- NavigationAnfang-->(.*).<!-- NavigationEnde-->$/", '', $inhalt);
wird aus $inhalt (s. unten) nicht das Gewünschte rausgeschnitten.
http://ch2.php.net/manual/de/pcre.pattern.modifiers.php
füge hinter den s modifier dazu. Dies führt dazu, dass Zeilenumbrüche
ebenfalls von '.' (oder "(.*)") "gematched" werden und das
"NavigationsEnde" überhaupt erst "erreicht" wird.
Viele Grüsse
Philipp
Halihallo
Zwischenzeitlich deshalb weil ich es noch immer nicht hinbekomme ..., trotz
$inhalt = preg_replace("/^<!-- NavigationAnfang-->(.*).<!-- NavigationEnde-->$/", '', $inhalt);
wird aus $inhalt (s. unten) nicht das Gewünschte rausgeschnitten.http://ch2.php.net/manual/de/pcre.pattern.modifiers.php
füge hinter den s modifier dazu. Dies führt dazu, dass Zeilenumbrüche
ebenfalls von '.' (oder "(.*)") "gematched" werden und das
"NavigationsEnde" überhaupt erst "erreicht" wird.
Äm, ja, also einfach:
$inhalt = preg_replace("/^<!-- NavigationAnfang-->(.*).<!-- NavigationEnde-->$/s", '', $inhalt);
Viele Grüsse
Philipp
Hallo liebe Forumer!
Zwischenzeitlich deshalb weil ich es noch immer nicht hinbekomme ..., trotz
$inhalt = preg_replace("/^<!-- NavigationAnfang-->(.*).<!-- NavigationEnde-->$/", '', $inhalt);
wird aus $inhalt (s. unten) nicht das Gewünschte rausgeschnitten.http://ch2.php.net/manual/de/pcre.pattern.modifiers.php
füge hinter den s modifier dazu. Dies führt dazu, dass Zeilenumbrüche
ebenfalls von '.' (oder "(.*)") "gematched" werden und das
"NavigationsEnde" überhaupt erst "erreicht" wird.Äm, ja, also einfach:
$inhalt = preg_replace("/^<!-- NavigationAnfang-->(.*).<!-- NavigationEnde-->$/s", '', $inhalt);
Nicht ganz (sicher mangels korrekter Darstellung meinerseits), nach einigen Tests funktioniert jetzt das:
$inhalt = preg_replace("/<!-- NavigationAnfang-->(.*)<!-- NavigationEnde-->/ms", '', $inhalt);
Es war sicher falsch mich gestern als RegExp-Frischling hier an Euch zu wenden, habe aber bereits begonnen Christian Kruses Statement an mich
'Lies doch einfach mal das Manual, Mensch ;-)'
umzusetzen.
Recht herzlichen Dank an alle,
Viennamade
yo,
REM gibt's nur bei BASIC und im Schlaf ;-)
oder hängt an der wand, ein gemeiner REMbrand...
Ilja
Halihallo llja
REM gibt's nur bei BASIC und im Schlaf ;-)
oder hängt an der wand, ein gemeiner REMbrand...
Der ist auch gut ;)
Und hat's mit dem 's' hingehauen?
Viele Grüsse
Philipp