rawurldecode和regexp用于在javascript中使用和不使用引号分割单词?

时间:2009-12-29 02:43:28

标签: php javascript jquery

所以情况就是这样:

我在php中有一个字符串(含有2个单词):

windows "mac os"

我使用rawurlencode对其进行编码,然后将其放在锚点中?name =之后的URL中。 当我点击它时,我在浏览器URL中看到以下内容。

的index.php?名称=窗户%20%5C%22mac%20OS%5C%22

然后我用jquery bbq的javascript获取它。

var string = $.deparam.querystring();
document.write(string.name);

并获得:

 windows \"mac os\"

当我用javascript输出时,我想获得windows“mac os”。然后我想把这些词分成:

 array[0] = windows
 array[1] = mac os

我认为第一步应该是使用rawurldecode获取字符串但是对于javascript所以我会得到windows“mac os”而不是windows \“mac os \”?

然后第二步应该是在javascript split()中使用什么regexp将它拆分为上面数组中的单词?

我尝试了很多选项,但没有一个可行。我被困在这里..它真的很令人沮丧。任何有关这两个步骤的帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

问题的第一部分:

我在同一输入上尝试了rawurlencode,它运行正常。我的猜测是添加斜杠(可能是magic_quotes),你需要删除它们:

所以对于你的链接:

<?php $yourstring = 'windows "mac os"'; ?>
<a href="index.php?name=<?php echo rawurlencode(stripslashes($yourstring)) ?>">Click me</a>

应将其编码为如下所示:

<a href="index.php?name=windows%20%22mac%20os%22">Click Me</a>

问题的第二部分:

我做了一些搜索,因为我不是正则表达式专家,并且找不到任何快速帮助你将字符串拆分成javascript中的数组,但看起来它可以完成....可能很漂亮容易。

答案 1 :(得分:1)

作为Doug答案的附录,你这样做的方式是:

var words = string.split( " " );
alert( words[ 0 ] ); // windows
alert( words.slice(1).join( " " ) ); // mac os -- Thank you Elijah Grey