CodeIgniter:不允许使用关键字符。<! - ?xml_version - >

时间:2013-05-30 14:24:31

标签: php codeigniter

我正在尝试POST一个SOAP请求。 它看起来像一个重复的问题。有多个解决方案可用于此问题,但没有一个适用于我。 所以我试过以下:

Found在SO中给出了最佳答案,但它给了我preg_match() compilation failure。我尝试用answer解决这个问题,但我仍然遇到同样的错误。

然后我在this问题上尝试了最后一个答案,但没有运气。

芯/ Input.php

function _clean_input_keys($str)
    {
        if ( ! preg_match("/[^a-zA-Z0-9_\-.]+$/i", $str))
        {
            exit('Disallowed Key Characters.'.$str);
        }

我不擅长正则表达式而无法找出问题所在?

1 个答案:

答案 0 :(得分:1)

你能先说出你想做什么吗?你通过邮件发送xml,得到?这个错误是怎么发生的?

Also in solution that you have found(这可能是原因)您在应用中使用的正则表达式是什么?

你有没有注意到这一点? preg_macth编译错误表示未转义的正则表达式

  

请注意,缺少的字符是。(点),你应该这样做   总是逃避正则表达式中的。(点)   允许任何一个字符。

编辑:

if ( !preg_match("/^[a-z0-9:_\/-\<\?]+$/i", $str)) //or alternatively match all chars "/^[\.-a-z0-9:_\/-]+$/i"
    {
        exit('Disallowed Key Characters.'.$str);
    }

不是添加的&lt;和?,你必须添加触发这种情况的所有章程。这些租船人没有加入条件的原因是为了防止注射。所以明智地使用它。谷歌xml preg_match expression以确保它是一个xml文件,如果需要,创建另一个输入检查。因为xml可能包含所有不允许的字符,所以你也可以删除那个条件并返回true;

Edit2:如果您可以代替发布,请尝试通过链接或上传文件解析XML。