Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching Cakephp:URl和视图缓存中的撇号_Caching_Cakephp_Views_Urlencode_Apostrophe - Fatal编程技术网

Caching Cakephp:URl和视图缓存中的撇号

Caching Cakephp:URl和视图缓存中的撇号,caching,cakephp,views,urlencode,apostrophe,Caching,Cakephp,Views,Urlencode,Apostrophe,如果URL中有撇号,则缓存有问题 例如: www.example.com/controller/action/What's+My+Name 当缓存不存在时,在第一次加载时,它可以正常加载。然而,一旦 创建缓存时,页面的后续加载将导致PHP语法 错误,因为缓存文件中有一行: $controller->here=$this->here='/controller/action/我叫什么名字?' 注意撇号没有转义,因此PHP语法错误 我怎样才能解决这个问题?这被认为是蛋糕上的虫子吗 谢谢。使用PHP的u

如果URL中有撇号,则缓存有问题

例如: www.example.com/controller/action/What's+My+Name

当缓存不存在时,在第一次加载时,它可以正常加载。然而,一旦 创建缓存时,页面的后续加载将导致PHP语法 错误,因为缓存文件中有一行:

$controller->here=$this->here='/controller/action/我叫什么名字?'

注意撇号没有转义,因此PHP语法错误

我怎样才能解决这个问题?这被认为是蛋糕上的虫子吗


谢谢。

使用PHP的
urlencode()
函数,对URL中可能包含非字母数字字符的组件进行编码,然后再将其传递到
HtmlHelper::link
或您拥有的其他内容中


您可能还想考虑一个更大的问题:首先在URL中有非字母数字是否是一个好主意,是否真的需要这样做。

回到原来的答案-您生成无效的URL,并不知何故预期框架不会中断?

要么在服务器端转义它们(urlencode),要么为url生成一个slug


像您这样滥用url会导致不一致的结果-客户端和CakePHP端。这不是一个模棱两可的情况——你错了。

我会考虑生成无效URL作为代码中的一个bug。空格在html中无效。我知道您的意思是在“URL”中而不是在“html”中,但您可能希望编辑您的评论。实际上,我必须使用JavaScript在客户端进行所有编码。我使用了encodeURIComponent(),它不编码撇号。不过,Escape()仍然会将其解码回缓存文件中的“只是”…谢谢,但我应该明确指出,我确实对URL进行了URL编码。我只是没有在这里显示编码的URL。我认为最好的办法是使用slug行为,将空格、撇号等转换为连字符或其他URL友好格式。