Regulärer Ausdruck funktioniert nicht, wie er soll

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
BB-BF-BM
Mitglied
Beiträge: 2179
Registriert: 28.10.2005 16:38
Wohnort: Essen

Regulärer Ausdruck funktioniert nicht, wie er soll

Beitrag von BB-BF-BM »

Folgenden Code verwende ich:

Code: Alles auswählen

/**
* Ich habe bereits die Werte für Variablen nach vorheriger Prüfung in den Code 
* eingesetzt, damit er etwas übersichtlicher ist
**/

if( preg_match(
    '#(.*?)<!-- ELSE '.preg_quote('title').' -->(.*?)#s', 
    '	<tr>
		<th colspan="4">{title}</th>
	</tr>
	<!-- ELSE title -->
	<tr>
		<td colspan="4">TEST</td>
	</tr>
	', 
    $else_blocks) )
{
    print_r($else_blocks);
}
Ausgegeben wird jedoch das hier (im Quelltext):

Code: Alles auswählen

Array
(
    [0] => 
	<tr>
		<th colspan="4">{title}</th>
	</tr>
	<!-- ELSE title -->
    [1] => 
	<tr>
		<th colspan="4">{title}</th>
	</tr>

	
    [2] => 
)
Warum ist der Code hinter <!-- ELSE title --> verschwunden?
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Weil der Teil in $else_blocks schon dem kompletten Suchstring entspricht. Versuch's mal mit

Code: Alles auswählen

'#^(.*?)<!-- ELSE '.preg_quote('title').' -->(.*?)$#s'
Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
BB-BF-BM
Mitglied
Beiträge: 2179
Registriert: 28.10.2005 16:38
Wohnort: Essen

Beitrag von BB-BF-BM »

Danke, so funktionierts :)

Auch wenn ich fünf Minuten nachdenken musste, warum :oops:
Jetzt hab ichs aber geschnallt :wink:
Antworten

Zurück zu „Coding & Technik“