Php Zend Dojo表单上的斜杠被\/替换

Php Zend Dojo表单上的斜杠被\/替换,php,zend-framework,dojo,Php,Zend Framework,Dojo,我正在这样做: 如果我这样做: $this->view->form->getElement('subtipo')->setStoreParams(array('url' => 'http://localhost/~xpete/project/public/info/lookup/tipo/1')); 我在生成的html/js上得到以下结果: subtipo_id = new dojo.data.ItemFileReadStore({"url":"http:\/\

我正在这样做:

如果我这样做:

$this->view->form->getElement('subtipo')->setStoreParams(array('url'
=> 'http://localhost/~xpete/project/public/info/lookup/tipo/1'));
我在生成的html/js上得到以下结果:

subtipo_id = new dojo.data.ItemFileReadStore({"url":"http:\/\/localhost\/~xpete\/project\/public\/info\/lookup\/tipo\/1"}); 
\
已替换为
\/
。 有什么办法可以避免吗?这是Zend bug吗

我用Zend FW 1.11.7 1.11.8和1.11.9预览版尝试了这个。 我试着打开和关闭两个魔术引号,结果是一样的。 我使用的是PHP5.3.7,所以默认情况下禁用了magic quote


setStoreParams
是来自Zend框架的方法,这就是为什么我认为这可能是一个bug。

这不是bug。通常的做法是转义双引号中的正斜杠
/
,以避免javascript错误。当Javascript将其作为字符串写入时,它只会写入
http://localhost/~xpete/project/public/info/lookup/tipo/1

以下是一些链接,描述了您在PHP中看到的一些行为:


其结果是为PHP5.4(当前为alpha)创建了一个标志,使其无法跳转斜杠。我还没有看到它是否被后传到5.3分支


由于ZendFramework 1(希望如此)的最终版本是今天,您可以根据需要修改Zend_Json::encode方法。让它查找以“http://”开头的字符串并去掉斜杠。

您必须使用
str\u replace(“/”,“”,您的字符串)替换用户界面中的“/”文本。

Javascript有一些奇怪的特性,但肯定没有什么比在字符串中解释正斜杠更奇怪的了。双引号字符串中唯一重要的元字符是反斜杠和双引号。我更新了我的帖子,但我不记得在哪里读到过。只是一直都是在这个假设下。无论哪种方式,document.write(“1/0”)都与document.write(“1\/0”)相同;