动态PHP正则表达式

时间:2012-10-11 18:30:05

标签: php regex

我正在编写一个函数,它接受一个字符串($skill),以及正则表达式中允许的字符列表。

以下是家庭作业的要求

  
      
  1. 技能名称:必填;不能太久;可以包含空格,连字符,撇号(当然还有字母数字字符),但不包含其他字符
  2.   
  3. 作为此步骤的一部分,您必须拥有一个php函数,该函数接收一个字符串和一个允许的字符列表(或者,不允许使用的字符,或者甚至是正则表达式),并返回一条错误消息(如果字符串与要求不匹配)或空字符串(如果字符串符合要求)。请务必为此功能指定一个描述性名称。
  4.   

这是我的代码

function validate_skill($skill, $list) { 
if (preg_match('/['.$list.']/',$skill)) {
        echo "The skill contains a match.<br />";
    }else{
    echo "The skill does not contain a match.";
    }
}

我只收到一个空白页面,通过评论该功能,该页面可以正常工作。这是将变量放在表达式中的正确方法吗?

1 个答案:

答案 0 :(得分:1)

你要么误解了你的要求,要么就是接近这个错误。以下是要求的简化版本:

  1. 该函数应该有2个参数,技能名称和某种验证字符串(在您的情况下,允许的字符列表,a.k.a a 白名单)。得到了✔
  2. 技能名称不应该很长。这意味着您需要限制长度。 ✘
  3. 通过验证字符串与允许的字符列表匹配,您需要确保它匹配那些, 没有别的 即可。现在,您正在检查是否找到了列表中的任何字符。 ✘
  4. 该功能应该返回错误(或没有),因此,它不应该回显任何东西。 ✘
  5. 你应该研究这些观点。

    另外,在另一个注释中,您有语法错误。 echo echo,应该是else echo