我想在IF語句中使用preg_match並返回false如果一個字符串包含一些不允許的模板函數。php正則表達式preg_match只允許某些關鍵字
下面是一些例子模板功能允許:
{function="nl2br($value.field_30)"}
{function="substr($value.field_30,0,250)"}
{function="addslashes($listing.photo.image_title)"}
{function="urlencode($listing.link)"}
{function="AdZone(1)"}
這些都與HTML等
混在現在,我想這個說法的preg_match返回true,如果正則表達式的代碼格式相匹配,但沒不包含允許的功能關鍵字之一:
if (preg_match('(({function=)(.+?)(nl2br|substr|addslashes|urlencode|AdZone)(.+?)\})',$string)) {
// found a function not allowed
} else {
// string contains only allowed functions or doesn't contain functions at all
}
有沒有人知道如何做到這一點?
不知道正則表達式是最好的工具。也許他們可以結合舊的老式標記器和解析器: - ?不過,這個問題很好,不管這個功能的潛在風險如何:) –
我打算這麼做,但爲了保持代碼清潔,我想我會先問這裏一個簡單的if語句解決方案。 – Joe