Hilfe bei regulären Ausdrücken ;)

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Gast210225

Hilfe bei regulären Ausdrücken ;)

Beitrag von Gast210225 »

Hallo,
ich kenn mich mit regulären Ausdrücker leider fast nicht aus, aber ich denke mein Problem kann man mit so einem regulären Ausdrück lösen ;)
Also, hier mein Problem:
ich hab eine Variable:
$var = '
Meine variable
<!-- START block -->
Hallo du! Wie gehts
<!-- END block -->
hier gehts weiter in der Variable...
'
;

Und ich möchte den Text, der zwischen dem <!-- START block --> und dem <!-- END block --> steht in einer neuen Variable haben....
Wie kann ich das machen?

Danke schon mal,

Johannes
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Wenn solch ein Block nur einmal vorkommt, könntest du es so machen:
Code:

Code: Alles auswählen

preg_match('#<!-- START block -->\n(.*?)\n<!-- END block -->#', $var, $results);
$results ist dann ein Array, das den gefundenen Text enthält.

Wenn mehrere Blöcke vorkommen sollten, musst du anstatt preg_match() preg_match_all() verwenden.
Zuletzt geändert von S2B am 29.12.2005 15:55, insgesamt 2-mal geändert.
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Gast210225

Beitrag von Gast210225 »

Hallo,
danke ;)

aber dein Code geht nur, wenn das zwischen dem "<!-- START block -->" und dem "<!-- END block -->" genau eine Zeile lang ist, wenn dazwischen 2 Zeilen sind, dann ist das Array leer....
Kann man das ändern?

Johannes
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Code: Alles auswählen

preg_match('#<!-- START block -->\n(.*?)\n<!-- END block -->#s', $var, $results);
:wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Gast210225

Beitrag von Gast210225 »

ok, danke ;)
nun habe ich aber noch ein Problem:
ich habe eine navigation.xml:

Code: Alles auswählen

<?xml version="1.0" standalone="yes" encoding="UTF-8"?>
<navigation>
	<item>
		<name>Index</name>
		<link>./</link>
	</item>
	<item>
		<name>Was ist ein CMS?</name>
		<link>./was-ist-ein-cms.html</link>
	</item>
</navigation>
diese lese ich in eine Variable ein:

Code: Alles auswählen

$navigation_source = file_get_contents($path . 'content/navigation.xml');
Nur wie bekomme ich nun die einzelnen "<item>"-Blöcke?
So hab ich es schon probiert:

Code: Alles auswählen

preg_match_all('/<item>(.*)<\/item>/s', $navigation_source, $results);
aber das passt anscheinend nicht so ganz...
Hier die Ausgabe von "print_r($results);":

Code: Alles auswählen

Array
(
    [0] => Array
        (
            [0] => <item>
		<name>Index</name>
		<link>./</link>
	</item>
	<item>
		<name>Was ist ein CMS?</name>
		<link>./was-ist-ein-cms.html</link>

	</item>
        )

    [1] => Array
        (
            [0] => 
		<name>Index</name>
		<link>./</link>
	</item>
	<item>
		<name>Was ist ein CMS?</name>
		<link>./was-ist-ein-cms.html</link>

	
        )

)
kann mir da nocheinmal jemand helfen? ;)


Viele Grüße,
Johannes
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Versuch mal .*? anstatt .* :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Gast210225

Beitrag von Gast210225 »

Danke, es geht super ;)
Nur nocheine Frage, was bewirkt das "?" ?
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Die normalen Quantifier (?, *, +) werden als "gierig" bezeichnet, da sie den größt möglichen Text festhalten wollen. Wenn man an diese Quantifier ein ? hängt, werden sie zu "minimalen" Quantifier, die den kleinst möglichen Text festhalten. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Antworten

Zurück zu „Coding & Technik“