RegX Problem, Zeilenumbruch
Redaktionelle Einordnung
Diese archivierte Diskussion behandelt RegX Problem, Zeilenumbruch aus Sicht der Rubrik PHP & MySQL.
CMS- und Technikfragen sind heute besonders dann relevant, wenn sie Indexierung, Rendering, interne Verlinkung oder Relaunch-Risiken beeinflussen.
Sinnvoll nutzbar bleibt der Thread vor allem als historischer Kontext, für typische Fragestellungen und zur Einordnung älterer Empfehlungen.
Startbeitrag
Originaler Foreninhalt in modernisierter Darstellung.
Ich habe folgendes Problem:
Mit dem RegX Code: !\[\$(.*?)\$\](.*?)\n!sS Versuche ich folgende Zeilen als Arrays auszulesen (Auszug):
[$AdminModulCacheBit$]
[$AdminModulCacheDelete$][<--|][::AdminModulCacheDeleteTitle::][|--|]
[|-->]
Das Auslesen des zweiten klappt ohne Probleme.
Aufgrund des Zeilenumbruchs wird aber kein Inhalt für das erste ausgelesen.
ich steh irgenwie im Walde , wie kann ich das erste korrekt auslesen ?
Antworten
6 BeiträgeVielleicht so:
/\\[\\$(.*?)\\$\\]([^\\[]*)\\[\\$(.*?)\\$\\](.*)/s
Danke, das ist ungeführ das, was ich suche, allerdings in der Ausgabe etwas unhandlich...
Bei meinem RegX ist ja nur das Problem, das die Zeilenumbrücke falsch verwertet werden, und die nächsten Zeilen nicht gelesen werden.
Folgender RegX funktioniert soweit, allerdings fehlen dann die weiteren Zeilen:
!\\[\\$(.*?)\\$\\][\\s]*(.*?)[\\n]!sS
\\n ist der Zeilenumbruch bei Linux. Wenn du Windows verwendest ist es \\r \\n und bei Mac \\r.
Wie genau soll den dein Array aussehen?
Diese Pattern würde dir diese Ausgabe erzeugen, wenn es das ist was du suchst?
/\\[\\$(.*?)\\$\\](.*)\\[\\$(.*?)\\$\\](.*)/s
Array
(
[0] => [$AdminModulCacheBit$] {$hash} {$path} {$created} {$lengh}
[$AdminModulCacheDelete$][<--|][::AdminModulCacheDeleteTitle::][|--|]
[|-->]
[1] => AdminModulCacheBit
[2] =>
[3] => AdminModulCacheDelete
[4] => [<--|][::AdminModulCacheDeleteTitle::][|--|]
[|-->]
)
Der RegX funktioniert leider nicht mit dem kompletten Template, das ich benutze.
Das probelm an meinem RegX ist, das nur eine Zeile genommen wird, anstatt bis zum nächsten auftreten...
\\[\\$(.*?)\\$\\][\\s]*(.*?)
ich habe es jetzt anders gelößt, mit zusätzlichen Tags:
\\[\\$(.*?)\\$\\]\\[\\![\\s]*(.*?)\\!\\]