Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2006 Teil von Juli

SELFHTML Forumsarchiv
Brauche hilfe bei regulären ausdrücken!

Informationsseite
  1. Seite (PHP) Brauche hilfe bei regulären ausdrücken! von Torben, 31. 07. 2006, 12:07
nach unten

Brauche hilfe bei regulären ausdrücken!

Die folgende Nachricht zum Thema stammt von: Torben, 31. 07. 2006, 12:07

Hi leute,

bin schon seit heute morgen am versuchen und probieren aber mit diesen regulären ausdrücken wills einfach nicht hinhauen, mein vorhaben:

$text = str_replace("<", "&lt;", $text);
$text = str_replace(">", "&gt;", $text);

allerdings soll das ganze nur dann ausgeführt werden wenn die beiden zeichen < und > nicht ein bestandteil von <br> sind!

kann mir einer von euch da weiterhelfen?

mfg torben

nach obennach unten

Brauche hilfe bei regulären ausdrücken!

Die folgende Nachricht zum Thema stammt von: H-P Ortner, 31. 07. 2006, 12:21

Hallo Torben!

»» bin schon seit heute morgen am versuchen und probieren aber mit diesen regulären ausdrücken wills einfach nicht hinhauen, mein vorhaben:
»» $text = str_replace("<", "&lt;", $text);
»» $text = str_replace(">", "&gt;", $text);
»» allerdings soll das ganze nur dann ausgeführt werden wenn die beiden zeichen < und > nicht ein bestandteil von <br> sind!
Ist zwar nicht was du suchst, aber wenn du am Ende die BR zurückverwandelst ist das Problem auch gelöst:
$text = str_replace("&lt;br&gt;", "<br>", $text);

Viele Grüße

H-P Ortner

nach obennach unten

Brauche hilfe bei regulären ausdrücken!

Die folgende Nachricht zum Thema stammt von: torben, 31. 07. 2006, 12:24

hey,

wie lustig vor einer sekunde kam ich da auch drauf auch wenn das nicht gerade die feine englische art ist...

mfg torben

nach obennach unten

Brauche hilfe bei regulären ausdrücken!

Die folgende Nachricht zum Thema stammt von: Gunnar Bittersmann, 31. 07. 2006, 17:23

Hello out there!

»» wie lustig vor einer sekunde kam ich da auch drauf auch wenn das nicht gerade die feine englische art ist...

Das sicher nicht, aber eventuell schneller als die Lösung mit Ausdruck* mit lookahead assertion; das hängt von Anteil der <br> in allen <…> ab.

See ya up the road,
Gunnar

* Ich mag nicht von „regulär“ sprechen, wenn’s kein regulärer Ausdruck ist.
--
“Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)

nach obennach unten

Brauche hilfe bei regulären ausdrücken!

Die folgende Nachricht zum Thema stammt von: Ashura, 31. 07. 2006, 14:19

Hallo Torben.

»» $text = str_replace("<", "&lt;", $text);
»» $text = str_replace(">", "&gt;", $text);
»»
»» allerdings soll das ganze nur dann ausgeführt werden wenn die beiden zeichen < und > nicht ein bestandteil von <br> sind!

Das dürfte recht einfach wie folgt gehen:

Durchlaufe mit einer Schleife sämtliche Fundstellen von „<“ und gehe hierbei immer von der letzten Fundstelle aus; den selben Ausgangspunkt verwendest du innerhalb der Schleife, um nach „<br>“ zu suchen.

Wenn die aktuelle Fundstelle von „<“ mit der aktuellen von „<br>“ übereinstimmt, überspringst du den aktuellen Schleifendurchlauf. Wenn nicht, dann führst du deine Ersetzung durch.


Einen schönen Montag noch.

Gruß, Ashura

--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
„It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
[HTML Design Constraints: Logical Markup]

nach obennach unten

Brauche hilfe bei regulären ausdrücken!

Die folgende Nachricht zum Thema stammt von: Gunnar Bittersmann, 31. 07. 2006, 16:08

Hello out there!

»» bin schon seit heute morgen am versuchen und probieren aber mit diesen regulären ausdrücken wills einfach nicht hinhauen, mein vorhaben:
»» $text = str_replace("<", "&lt;", $text);
»» $text = str_replace(">", "&gt;", $text);

Ich denke, du wolltest mit regulären Ausdrücken arbeiten? str_replace tut das nicht.

preg_replace tut dies; dann kannst du beides zusammenfassen:

$text = preg_replace("/<([^>]*)/", "&lt;\\1&gt;", $text);


»» allerdings soll das ganze nur dann ausgeführt werden wenn die beiden zeichen < und > nicht ein bestandteil von <br> sind!

Du möchtest also alle '<' finden, hinter denen nicht 'br' steht. Das geht mit negative lookahead assertions.

»» kann mir einer von euch da weiterhelfen?

http://forum.de.selfhtml.org/archiv/2005/6/t109413/#m683611

See ya up the road,
Gunnar
--
“Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2006 Teil von Juli

© 1998-2006 Seite Impressum, Software: Classic Forum