IF文でpreg_matchを使用しようとしています。文字列にいくつかのテンプレート関数が含まれていない場合はfalseを返します。正規表現は、コードのフォーマットと一致した場合今、私は真を返すように、この時点でpreg_match文を希望php regex 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など
ので混在しているが、didnの:ここでは
は、いくつかの例テンプレートの機能が許可されています「Tは、許可された機能のキーワードのいずれかが含まれています。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
}
誰もがこれを行う方法を知っていますか?
ない
preg_quote
をスキップするが、その後は単に関数名が台無しは最終パターン(例えば、配列を破前preg_quote
を介して関数名を実行する)可能性があるものが含まれていないことを確認してくださいツール。おそらくそれらは古い学校の古いトークナイザとパーサと組み合わせることができます: - ?しかし、機能の潜在的なリスクにかかわらず、問題は素晴らしいです。 –私はそれを行うつもりでしたが、コードをきれいに保つために、私はここで簡単なif文の解決策を最初に尋ねると思っていました。 – Joe