Zum Inhalt springen
ThreadPHP & MySQL

RegX Problem, Zeilenumbruch

Kategorie
PHP & MySQL
Gelesen
2298
Antworten
6
Erstellt von: gelöschter BenutzerDatum: 23.01.2012, 21:35 Uhr
Archiv-KommentarArchiviert, nicht priorisiertCMS & technische Umsetzung

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.

Zur Kategorie
gelöschter Benutzer
Threadstart · PHP & MySQL 2298 mal gelesen · 23.01.2012, 21:35 Uhr

Ich habe folgendes Problem:

Mit dem RegX Code: !\[\$(.*?)\$\](.*?)\n!sS Versuche ich folgende Zeilen als Arrays auszulesen (Auszug):


[$AdminModulCacheBit$]
 {$hash} 
 {$path} 
 {$created} 
 {$lengh} 

[$AdminModulCacheDelete$][<--|][::AdminModulCacheDeleteTitle::][|--|]

[::AdminModulCacheDeleteCont::]

[|-->]


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äge
gelöschter Benutzer
am 24.01.2012, 00:45 Uhr schrieb
Antwort

Vielleicht so:

/\\[\\$(.*?)\\$\\]([^\\[]*)\\[\\$(.*?)\\$\\](.*)/s

gelöschter Benutzer
am 24.01.2012, 10:53 Uhr schrieb
Antwort

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.

gelöschter Benutzer
am 24.01.2012, 15:41 Uhr schrieb
Antwort

Folgender RegX funktioniert soweit, allerdings fehlen dann die weiteren Zeilen:
!\\[\\$(.*?)\\$\\][\\s]*(.*?)[\\n]!sS

gelöschter Benutzer
am 24.01.2012, 17:18 Uhr schrieb
Antwort

\\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::][|--|]

[::AdminModulCacheDeleteCont::]

[|-->]
[1] => AdminModulCacheBit
[2] =>
{$hash}
{$path}
{$created}
{$lengh}


[3] => AdminModulCacheDelete
[4] => [<--|][::AdminModulCacheDeleteTitle::][|--|]

[::AdminModulCacheDeleteCont::]

[|-->]
)

gelöschter Benutzer
am 24.01.2012, 21:03 Uhr schrieb
Antwort

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]*(.*?)

gelöschter Benutzer
am 25.01.2012, 22:10 Uhr schrieb
Antwort

ich habe es jetzt anders gelößt, mit zusätzlichen Tags:
\\[\\$(.*?)\\$\\]\\[\\![\\s]*(.*?)\\!\\]