在我的PHP代码中,我正在设置一个区域供人们输入自己要显示的信息。信息存储在一个数组中,我希望尽可能灵活。
如果我有类似......
$myArray[]['Text'] = 'Don't want this to fail';
或
$myArray[]['Text'] = "This has to be "easy" to do";
我如何在数组值中转义撇号或引用?
由于
编辑:由于只有一对一的关系,我将我的数组更改为此结构...
$linksArray['Link Name'] ='/path/to/link';
$linksArray['Link Name2'] ='/path/to/link2';
$linksArray['Link Name2'] ='/path/to/link3';
计划是我设置一个包含文件的模板,该文件包含其他人(技术水平较低的人)可以维护的格式的链接。他们可以直接访问PHP,我担心他们可能会在“链接名称”区域中放入单引号或双引号并破坏系统。
再次感谢。
可能的解决方案:
谢谢@Tim Cooper。
这是一个适合我的样本......
$link = "http://www.google.com";
$text = <<<TEXT
Don't you loving "googling" things
TEXT;
$linksArray[$text] = $link;
答案 0 :(得分:1)
使用heredoc可能是一个很好的解决方案:
$myArray[]['Text'] = <<<TEXT
Place text here without escaping " or '
TEXT;
答案 1 :(得分:1)
PHP将在输入时正确处理这些字符串。 如果您正如您所示自己构建字符串,则可以在引用样式(单一和双重)之间切换...如下所示:
$myArray[]['Text'] = "Don't want this to fail";
$myArray[]['Text'] = 'This has to be "easy" to do';
或者,如果必须转义字符,则在引号前使用\字符。
$myArray[]['Text'] = 'Don\'t want this to fail';
$myArray[]['Text'] = "This has to be \"easy\" to do";
答案 2 :(得分:0)
如果您真的想让我轻松,请使用INI或XML样式的单独配置文件。 INI通常是人们手动编辑最容易的。如果你有一个非常嵌套的结构,XML就很好。
答案 3 :(得分:0)
除非您让用户输入直接的PHP代码(您可能不是),否则在进行显示之前,您不必担心他们输入的内容。当您实际显示他们输入的信息时,您需要使用htmlentities()
之类的信息对其进行清理。
答案 4 :(得分:0)
您可以使用addslashes($ str)函数自动转义引号。
您还可以尝试htmlentities,它会将引号和其他特殊值编码为HTML实体:http://php.net/manual/en/function.htmlentities.php