转义数组值中的引号或特殊字符

时间:2011-05-04 22:18:17

标签: php arrays escaping

在我的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;

5 个答案:

答案 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