Kleines RegExp Problem

firstlord18

Erfahrenes Mitglied
Hallo,

habe gerade ein kleines Problem mit regulären Ausdrücken.

Ich habe folgendes:

Code:
|ol|
  <li>bla</li>
  <li>blupp</li>
  <li>foo</li>
|/ol|

nun möchte ich alle <li> und </li>'s durch |li| und |/li| ersetzten!
habe schon sehr sehr viel versucht:

PHP:
// suchmuster => ersatz:
'/^|(ol)|[^\d\w]<(li)>(.*)<\/\\2>[^\d\w]|\/\\1|$/uim' => '|$3|$4|/$3|'
'/|(ol)|<(li)>(.*)<\/\\2>|\/\\1|/uim' => '|$2|$4|/$2|'
'/|(ol)|\s<(li)>(.*)<\/\\3>\s|\/\\1|/uim' => '|$3|$4|/$3|'
/|(ol)|(.*)<(li)>(.*)<\/\\3>(.*)|\/\\1|/uim => |$3|$4|/$3|

und noch andere ...

Das Problem dabei:

Bisher habe ich die Dinger garnicht auf meinen Code von oben angewendet, sondern geschaut, ob dadurch auch andere ersetzt wurden. Das Ergebnis:

PHP:
// foo => (wird zu) bla:
|em| |/em| |strike| |/strike| => |||/||em| |/em| |strike| |/strike||em||/em||strike||/strike|  => |||/|||||/|e|||/|m|||/|||||/|||||/|/|||/|e|||/|m|||/|||||/|||||/|s|||/|t|||/|r|||/|i|||/|k|||/|e|||/|||||/|||||/|/|||/|s|||/|t|||/|r|||/|i|||/|k|||/|e|||/|||||/|

Ich komme einfach nicht drauf, wo mein Fehler liegt :(

Bitte helft mir, Danke!
 
Dein Fehler ist, dass der senkrechte Strich (|) in regulären Ausdrücken die Bedeutung der Disjunktion hat und diese durch Fluchtzeichen (\) entwertet werden müssten, um sie als normale Zeichen zu nutzen.

Noch eine Frage nebenbei: Wozu möchtest du die Auszeichnungen umformen?
 
Ah natürluch. Ich habe mir noch überlegt, ob er irgendein wichtiger Bestandteil von RegExp ist, und ich bin nicht drauf gekommen ...

Ich möchte das nutzten, um die erlaubten Tags in einem Commentding durch BB-Code zu ersetzten, danach den Rest per htmlentities() umzuwandeln, und die BB-COdes wieder zurück zu HTML!
 
Mist, ich bekomme es trotzdem nicht hin :/

Kannst du mir dabei helfen?

Ich möchte aus

Code:
 |ol|
 	<li>sd</li>
 	<li>asd</li>
 	<li>asd</li>
 |/ol|

das:

Code:
  |ol|
 	|li|sd|/li|
	 |li|asd|/li|
	 |li|asd|/li|
 |/ol|

haben ;)
 
Gumbo hat gesagt.:
Wandle doch einfach alle nichterlaubten Auszeichnungen um.
a) wie geht das
und
b) ich möchte auch erlaubte aber nicht geschlossene Auszeichnungen umwandeln ...
:)

deswegen vllt doch meine obere methode nehmen!?
Könntest du mir bei dem RegExp helfen, um die <li> nach |li| zu konvertieren, die innerhalb von |ol| und |/ol| stehen ?
 
Zuletzt bearbeitet:
Zurück