2011-09-23 106 views
1

通過在PHP的preg_replace_callback函數中使用此正則表達式:/{(.*)}/s,我可以匹配此字符串{string}正則表達式(preg_match_all)

但我並不怎麼該字符串,如果該字符串包含標籤之間像{tag}{/tag}匹配,

例如:
我不想在{tag} Anything Here {string} Anything Here {/tag}匹配{string}

任何建議(或者例子)都是非常受歡迎的。

+3

您有多少可能的「tag」值?那麼這可能是一個簡單的任務。 – DhruvPathak

+0

您的標籤可能是嵌套的嗎? –

+0

@DhruvPathak:我認爲3個可能的值。 – Pawan

回答

2

您可以用玩:

preg_match_all("/(\{string\})|(\{tag\}.+\{.+tag\})/", $str, $m); 

echo "<pre>"; 
print_r($m); 
echo "</pre>"; 

正如你將看到,該表達式將返回A M有三個數組元素。第二個數組元素包含所有未加入{tag}的{string} .... {string} .... {/ tag}

+0

這對'preg_replace_callback'有效嗎?你可以添加另一個顯示該功能的代碼示例嗎? – hakre

+0

因爲我從來沒有使用過這個函數「preg_replace_callback」,所以我不能給你任何好的消化。但如果你喜歡,你可以描述你喜歡的結果,我會搜索找到你的最佳解決方案。 –

+0

我只是問,因爲在OP中它被要求提供'preg_replace_callback'。我將編輯標題,以免問題引起誤解。 – hakre