在PHP中验证预定义的标记

时间:2018-01-01 10:45:59

标签: php

我有一项功能,允许用户使用预定义的标签构建消息。

这些是我目前允许用户输入的唯一标签,因此在PHP中它应该验证标签是否是其中之一。

最佳方法是什么以及如何执行验证?使用preg_match?

enter image description here

1 个答案:

答案 0 :(得分:-1)

function findTag($str,$replaceTag = []){
    if(!$str){
        return false;
    }
    $end = strlen($str);
    $i=0;
    while($i<=$end){
        if(!isset($str[$i])){
            break;
        }
        //Find tag
        if($str[$i]=='{'){
            $tag = '';
            for($j=$i+1;$j<=$end;$j++){
                if($str[$j]=='}'){
                    break;
                }
                //Check nested tag {xyz{abc}efg}
                if($str[$j]=='{'){
                    return -1;//use nested tag
                }
                $tag.=$str[$j];
            }
            if(!isset($replaceTag[$tag])){
                return -2;//invalid tag you can skip or prevent string parsing
            }
            //Replace tag with value
            $str = substr_replace($str,$replaceTag[$tag],$i,$j);
            $i=$j;
        }
        $i++;
    }
    return $str;
}

$str = 'Customer name : {tag1}, thank you for your {tag{tag2}}';
$replaceTag = ['tag1'=>' tag 1 value'];
var_dump(findTag($str,$replaceTag));