preg_match_all Problem

firstlord18

Erfahrenes Mitglied
Hallo,

habe ein Problemn mit dieser Fkt.
Ich habe dieverse Blöcke in einer Templatedatei. also z.b. so:

Code:
asoi udasodj lasj jjj a<br> \\\\\\ asdasd 
		\news_overview_start\
			ss
			\news_overview_start\ 
				HALLO, das ist es 
			\news_overview_ende\ 
			kas dakhsd 
		\news_overview_ende\
		sss

kann auch so aussehen:

Code:
asoi udasodj lasj jjj a<br> \\\\\\ asdasd 
		"news_overview_start""
			ss
		 
				HALLO, das ist es 
			\news_overview_ende\ 
			kas dakhsd 
		"news_overview_ende*@
		sss

so, nun möchte ich den benutzter festlegen lassen, wie der block deifiniert ist, also z.b. so:

im 1. Bsp:
blockstart = \news_overview_start\
und
blockende = \news_overview_end\

und im 2. Bsp
blockstart = "news_overview_start""
und
blockend = "news_overview_ende*@


so, diese block start und end teile kann der user selbst festlegen.

nun will ich halt aus dem striong alles, was dazwischen steht raushaben:

PHP:
$pattern = "@".$blockstart."(.*).".$blockend."@is";

preg_match_all($pattern, $str, $matches);

so, wenn nun jmd als blockstart sowas wie {start} und als ende sowas wie {ende} festlegt, dann alles wunderbar ...

wenn jmd irgendwas festlegt, was im regexp eine sonderfkt hat, z.b. $, ^, [, @, \ etc, dann das ganze nocht mehr ...

wie könnte ich das ganze trotzdem zum laufen bringen

danke!
 
Hi,

schau dir mal die PHP Funktion preg_quote an, dadurch werden die Zeichen automatisch wenn nötig mit einem \ versehen.

Beispiel:
PHP:
// Das @ ist der Begrenzer den du in der Regex auch verwendest
$blockstart = preg_quote($blockstart, "@");

Gruß
Markus

PS: Nach paar Jahren mein erster Post! *freu*
 
Zuletzt bearbeitet:
Zurück