草庐IT

Escaping

全部标签

PHP:像linux一样转义文件名

我在处理用户上传的文件名时遇到了麻烦。当我尝试访问它们时,因为其中一些具有特殊字符,所以使用的命令显示找不到文件或类似内容。我用过escapeshellcmd但没有成功。当我在linux控制台中使用“tab”键时(当你开始输入文件名并希望它完成时),bash正确地转义了文件名,如果我完全使用那个“转义”文件名,它有效。我已经试过了:preg_replace("/[^a-zA-Z0-9\-\.\s]/","\\\\$0",$filename)转义除数字、字母、-和空格之外的所有内容……但我发现对于文件“test_1.jpg”,此命令将其转换为“test_1.jpg”,但它不起作用,因为“

php - POST 中 JSON/PHP 中的 & 符号

我有一个文本字段,它通过AJAX和POST请求通过JSON和jQuery(用.toJSON函数包装)发送到我的服务器。在PHP方面,我正在做json_decode。一切正常,但如果我在其中放入和号(&),它会拆分POST参数,因此它在PHP端不完整(至少var_dump($_POST)正在写出)。toJSON和json_decode不应该完成所有工作(转义)吗?我尝试了encodeURIComponent、&到&、&到\u0026,但它不起作用。我做错了什么?AJAX调用functionexecute(){this.setupUrl();return$.ajax({type:this.

php - 如何只转义某些字符

php函数preg_quote转义这些字符.\+*?[^]$(){}=!|:-请问我可以用什么来转义这些字符:+-&&||!(){}[]^"~*?:/已编辑(按“待定”要求):我正在实现Solr搜索并显示:Solrgivesthefollowingcharactersspecialmeaningwhentheyappearinaquery:+-&&||!(){}[]^"~*?:/TomakeSolrinterpretanyofthesecharactersliterally,ratherasaspecialcharacter,precedethecharacterwithabacksl

php - 是否有可能 "escape"PHP 中的方法名称,以便能够拥有与保留关键字冲突的方法名称?

我在PHP中做MVC,我想在我的Controller中有一个list()方法,以具有URL/entity/list/parent_id,以显示属于该父级的所有“x”.但是,我不能使用名为list()的方法,因为它是PHP保留关键字。例如,在VB.Net中,如果我需要一个名称与保留关键字冲突的名称,我可以将其包装在[reserved_name]中。在SQL中,您可以做同样的事情。在MySQL中,您使用反引号`PHP中是否有一些语法指定“将其视为标识符,而不是关键字”?(注意:我知道我可以在没有list()方法的情况下使用路由来执行此操作。我也可以简单地调用其他操作。问题是PHP是否提供这

php - 使用文本区域发布数据是否会自动添加斜杠(转义)文本?

好的,所以我在使用简单的文本区域时遇到了问题。我正在使用一种隐藏页面来轻松地使用JSON对一些数据进行编码。但是,我的所有文本输入都自动在某处转义,我不知道在哪里。当脚本启动时,我所有的$_POST变量都会自动通过htmlentities()函数运行,如下所示:$ani->i->post=$this->clean($_POST,true);functionclean($values,$unset=false){if(is_array($values)){foreach($valuesas$key=>$value){$newkey=strtolower($key);$return[$ne

PHP 转义查询字符串变量

我在我的Web应用程序中创建了一个表单,它只有一个文本字段,并且该字段使用GET发布到PHP页面,但我观察到奇怪的行为。即当我在我的本地服务器上测试它时,接收到的文本是在文本字段中写入的,但是当我将它上传到我的在线服务器时,接收到的字符串会自动转义意味着所有单引号和双引号都被转义。例如如果我写It'snottrue...那么在php端我会得到$comment=$_REQUEST["comm"];print$comment;//willprintIt\'snottrue...onmyonlineserver//willprintIt'snottrue...onmylocalserver我

php - 为什么 "\t"不转义这种 PHP 日期格式?

这是日期。除“\a\t”中的t外,所有内容都被转义。有人知道为什么吗?date("Mm\,Y\a\tg\:ia",$s->post_date); 最佳答案 "\t"是水平制表符的转义序列。使用'\t'或"\\t"单引号字符串从字面上解释\,我建议您将其用于您的用例。否则,您必须转义\字符才能按字面解释。在PHP的情况下,双引号字符串中无效转义序列前面的\也会按字面解释。我宁愿避免这种行为,遵循最少意外原则。附言。(感谢@IMSoP)在两种情况下,\不会在单引号字符串中按字面解释:仍然可以使用双反斜杠,但可选。例如:'\\hi'===

PHP:序列化和反序列化包含转义字符的字符串

如何正确序列化和反序列化包含转义字符的字符串?给定:$data="\'test\'";$out=serialize($data);print_r($out);//->s:8:"\'test\'";这里的问题是,反序列化不接受字符串长度:$out='s:8:"\'test\'"';var_dump(unserialize($out));//->bool(false)但是如果我将字符串长度更改为6(忽略转义字符):$out='s:6:"\'test\'"';var_dump(unserialize($out));//->string(6)"'test'"它反序列化正确。处理这个问题的好方法

php - HTML 使用 PHP(和 ZF)转义用户提供的数据的最佳实践

注意:我使用的是ZendFramework,但我认为其中大部分适用于一般的PHP编码。我正在尝试选择一种编写View脚本的策略,可能是在模板引擎的帮助下。动机:清晰和安全。我只是不喜欢编写.phtml脚本。这种语法对于做最经常需要的事情来说非常冗长——输出一个变量:escape($this->myVariable);?>除了代码冗长之外,恕我直言,模板作者不应该在每次他/她想要输出变量时都记住(和打扰)编写转义调用。忘记调用几乎肯定会导致XSS漏洞。对于这个问题我有两种可能的解决方案:方案一:自动转义的模板引擎我认为至少Smarty有一个选项可以在输出变量时自动转义html实体。有po

PHP 将 JSON 字符串回显到 HTML 输入值中 - 需要字符转义

这是我遇到问题的代码的简化版本。$variable="{\\\"JSON"//longJSONstringcreatedinJavascriptwithJSON.stringify?>"/>输入框只包含{\我需要一种方法来转义整个JSON字符串谢谢亚历克斯 最佳答案 您正在输出到HTML上下文中,因此您需要特定于html的转义:"/>^^^^^^^^^^^^^^^^---- 关于PHP将JSON字符串回显到HTML输入值中-需要字符转义,我们在StackOverflow上找到一个类似的问