Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2003 Teil von Dezember

SELFHTML Forumsarchiv
reguläre Ausdrücke: ereg("p.*dd",....)

Informationsseite
  1. Seite (PHP) reguläre Ausdrücke: ereg("p.*dd",....) von asdf (Robert), 30. 12. 2003, 21:46
nach unten

reguläre Ausdrücke: ereg("p.*dd",....)

Die folgende Nachricht zum Thema stammt von: asdf (Robert), 30. 12. 2003, 21:46

Hallo!

Ich wollte gerade alle Teile in einem String die mit <?php beginnen bis ?> mit "irgendetwas anderem" ersetzten.

Code:

ereg_replace("<\?php.*\?>","aaa",$string);

Wenn ich als $string jetzt habe:

<?phpdasfasdf?> funktioniert alles prächtig.

Wenn ich habe:
<?php fsadfasd ?> ?>
will ich das "aaa ?>" zurückgegeben wird. Es wird vom ersten "<?php" bis zum letzten "?>" im $string alles ersetzt es soll aber
nur von einem "<?php" bis zum nächsten "?>" alles ersetzt werden.

Kann mir einer sagen wie ich das machen kann?


Danke
MFG Robert

nach obennach unten

reguläre Ausdrücke: ereg("p.*dd",....)

Die folgende Nachricht zum Thema stammt von: Alfred, 30. 12. 2003, 22:18

Hallöchen,

Probiers mal mit

( Schnellschuß, keine Gewähr ;-) )

<\?php.+?\?>


also statt ".*"  ".+?"

( Oh mann diese Syntax... )

Besten Gruß,

Alfred

nach obennach unten

reguläre Ausdrücke: ereg("p.*dd",....)

Die folgende Nachricht zum Thema stammt von: Cheatah, 30. 12. 2003, 22:25

Hi,

»» es soll aber
»» nur von einem "<?php" bis zum nächsten "?>" alles ersetzt werden.

Greediness, siehe andere Antwort. Das hilft aber auch nicht gegen
<?php echo "?>" ?>
oder
<?php ereg_replace("<\?php.+?\?>","aaa",$string) ?>

Du bist an die Grenzen von Regular Expressions gestoßen und möchtest ein Parsing vornehmen. Oder Dein Vorhaben durch etwas anderes ersetzen.

Cheatah

--
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes

nach obennach unten

reguläre Ausdrücke: ereg("p.*dd",....)

Die folgende Nachricht zum Thema stammt von: Alfred, 30. 12. 2003, 22:44

Hallo Cheatah!
»»
»» Das hilft aber auch nicht gegen
»» <?php echo "?>" ?>
»» oder
»» <?php ereg_replace("<\?php.+?\?>","aaa",$string) ?>

Klasse - da hab ich nun so _gar nicht_ dran gedacht... ;-)

Also muß er verschachtelte Vorkommen der Suchbedingung vermeiden -  vielleicht mit ( um bei diesem Beispiel zu bleiben ):

<?php ereg_replace($blabla,"aaa",$string) ?>

mit

$blabla = "<\?php.+?\?>"; // geht das überhaupt?

und ansonsten "<" und ">" die als Text gemeint sind ( denn woher sollten sie sonst kommen ) maskieren ( mit "&lt" etc.) ?

Interessiert mich....

Gruß,

Alfred

nach obennach unten

reguläre Ausdrücke: ereg("p.*dd",....)

Die folgende Nachricht zum Thema stammt von: Cheatah, 30. 12. 2003, 22:49

Hi,

»» Also muß er verschachtelte Vorkommen der Suchbedingung vermeiden

also das Vorkommen der Suchbedingung im PHP-Code.

»» $blabla = "<\?php.+?\?>"; // geht das überhaupt?

Macht keinen Unterschied. Du kannst links "<?php" und rechts "?>" hinzufügen - ist exakt das selbe.

»» und ansonsten "<" und ">" die als Text gemeint sind ( denn woher sollten sie sonst kommen ) maskieren ( mit "&lt" etc.) ?

Das ist nur möglich innerhalb von HTML - und dort sogar nötig. Also keine Veränderung.

»» Interessiert mich....

A propos Veränderung: Die Suchbedingung muss verändert werden, und jedes andere Vorkommen der Zeichenkette, beispielsweise durch Stringverknüpfung oder Maskierung. Und zwar in _jedem_ Script, welches durchsucht werden soll - ob von Robert oder nicht. Nein, er möchte ein Parsing durchführen, keine RegExp verwenden. Oder sein Vorhaben an sich modifizieren.

Cheatah

--
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes

nach obennach unten

reguläre Ausdrücke: ereg("p.*dd",....)

Die folgende Nachricht zum Thema stammt von: asdf (Robert), 31. 12. 2003, 14:55

Hallo!

<\?php.+?\?>

Danke erstmal!

Zuerst ging garnichts mit dem .+? hier.
Dann habe ich gelesen das das mit ereg_replace nicht geht.
Also habe ich preg_replace verwendet. Alles klappt wie es soll, bis auf eine kleinigkeit.
Hier erstmal ein klieiner Quelltext den ich geschrieben hab damti man es sich besser vorstellen kann:

<?php
import_request_variables('gp','url_');
echo preg_replace("<\?php.+?\?>","aaa",$url_name);
?>
<form action="login.php" method=post>
<textarea name="name">
</textarea>
<input type="submit">
</form>

Anwendung: http://ikt.bg9.at/~rchiryai/login.php

das Problem ist nach denm Ersetzten sollte aus solchen Zeichenketten:
"<?php irgendwas ?>"
das hier werden:
"aaa"
es wird aber:
"<aaa>" <--- das sieht man wenn man dann den Quelltext betachtet.

Koennt ihr mir sagen warum das so ist?

Und wenn möglich hätte ich gern gewusst wo ich nachlesen kann wie .+? arbeitet.

Danke Robert

nach obennach unten

reguläre Ausdrücke: ereg("p.*dd",....)

Die folgende Nachricht zum Thema stammt von: asdf (Robert), 31. 12. 2003, 14:57

»» Anwendung: http://ikt.bg9.at/~rchiryai/login.php
schlim schlimm schlimm

Falsche addresse

http://ikt.bg9.at/~rchiryai/az/login.php

nach obennach unten

reguläre Ausdrücke: ereg("p.*dd",....)

Die folgende Nachricht zum Thema stammt von: MudGuard, 01. 01. 2004, 12:35

Hi,

»» das Problem ist nach denm Ersetzten sollte aus solchen Zeichenketten:
»» "<?php irgendwas ?>"
»» das hier werden:
»» "aaa"
»» es wird aber:
»» "<aaa>" <--- das sieht man wenn man dann den Quelltext betachtet.

weil < und > im regulären Ausdruck für Wortanfang und Wortende stehen. Dein RE matcht also nur
?php irgendwas ?
- und ersetzt auch nur diesen Teil.

Wenn die < und > nicht als Wortanfang/-ende gedacht sind, sondern als tatsächliche Zeichen, müssen sie - genauso wie die ? - escapet werden.

cu,
Andreas
--
MudGuard? Siehe http://www.mud-guard.de/

nach obennach unten

reguläre Ausdrücke: ereg("p.*dd",....)

Die folgende Nachricht zum Thema stammt von: asdf (Robert), 02. 01. 2004, 18:31

Hallo,
»» »» das Problem ist nach denm Ersetzten sollte aus solchen Zeichenketten:

das Problem ist, dass ich einfach noch keine Ahnung von preg_replace hatte.

Escapen von  < und > machts nicht.
Aber wenn man !<\?php(.+?)\?>!, auf die Rufzeichen deutend, benutzt
geht alles hervorragend.

Gutentag Robert

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2003 Teil von Dezember

© 1998-2006 Seite Impressum, Software: Classic Forum