Seite 1 von 1

Regulärer Ausdruck funktioniert nicht, wie er soll

Verfasst: 26.06.2006 18:10
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?

Verfasst: 26.06.2006 18:19
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

Verfasst: 26.06.2006 19:42
von BB-BF-BM
Danke, so funktionierts :)

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