我正在尝试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);
}
我不擅长正则表达式而无法找出问题所在?
答案 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。