Düzenli ifade filtreleme - Expression Engine şablonu ayrıştırma taklit

2 Cevap php

I (yeniden) Expression Engine fantastik şablon ayrıştırma yöntemini taklit eden istiyorum. (Pls :) neden bunu kullanarak değil bana sormayın)

Ben gibi basit etiketleri bulmak ve ayrıştırmak mümkün kulüpler olsa

{example_param = "param_value"}

i kapatma etiketi eklendi etiketleri ayrıştırmak değil:

{cyclic_param}
...
{/cyclic_param}

Bu ben kullanıyorum desen:

'/[\{^\/](.*)\}/iU'

ama çok döner {/ cyclic_param} bulunuyor.

) ((Ve ben EE'nin kaynağından anlamaya olamaz: Ben orada sıradanifade öğretmenler katrilyonlar var ama bu hiç anlayamıyorum şey biliyorum

PHP'nin regexp ile nasıl i (çok kendi iç blok ile) açılış ve kapanış etiketleri bulabilirim?

Yardımlarınız için teşekkürler!

2 Cevap

 preg_match('~{(\w+)}(.+?){/\1}~s', $r, $m);

içerik $ m olacaktır [2].

bu olsa yuvalama idare olmaz.

/ Edit: Tam bir örnek

	$text = "
	foo {single1=abc}
	bar	{double1} one {/double1}
	foo {single2=def}
	bar	{double2} two {/double2}


	";

	$tag = '~
		{(\w+)}(.+?){/\1}
		|
		{(\w+)=(.+?)}
	~six';

	preg_match_all($tag, $text, $m, PREG_SET_ORDER);
	foreach($m as $p) {
		if(isset($p[3]))
			echo "single $p[3] with param $p[4]\n";
		else
			echo "double $p[1] with content $p[2]\n";
	}

Ben bu sizin için doğru olduğunu düşünüyorum:

'/\{[^\/]*\}/iU'