2009-12-29 4 views
1

est donc ici le cas:rawurldecode et regexp pour scinder des mots avec et sans guillemets en javascript?

j'ai une chaîne en php (containts 2 mots):

windows "mac os" 

i encode avec rawurlencode et le mettre dans l'URL du nom après = dans une ancre?. quand je clique dessus, je vois ce qui suit dans l'url des navigateurs.

index.php? Name = windows% 20% 5C% 22mac% 20oS% 5C% 22

puis-je obtenir avec javascript avec barbecue jquery.

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

et obtenez:

windows \"mac os\" 

je veux obtenir des fenêtres "mac os" quand je la sortie avec javascript. puis je veux diviser les mots:

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

la première étape, je pense, devrait être d'obtenir la chaîne avec rawurldecode mais javascript donc je vais obtenir des fenêtres « mac os » plutôt que windows \ "mac os \ "?

puis la deuxième étape devrait être ce que regexp à utiliser dans javascript split() pour le diviser en mots dans le tableau ci-dessus?

ive essayé de nombreuses options mais aucune ne fonctionne. Je suis bloqué ici .. et c'est vraiment frustrant. toute aide à ces 2 étapes serait appréciée

+0

Je jure que je l'ai vu cette question sur le SO avant, je ne peux pas le trouver au moment –

Répondre

1

La première partie de la question:

J'ai essayé rawurlencode sur la même entrée, et il a bien fonctionné. Je suppose quelque chose ajoute des barres obliques (peut-être magic_quotes) et vous aurez besoin de les enlever:

Donc, pour votre lien:

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

Cela devrait coder pour ressembler à ceci:

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

La deuxième partie de la question:

J'ai fait quelques recherches puisque je ne suis pas un expert en regex, et co Vous ne trouverez rien de rapide pour vous aider à diviser la chaîne en un tableau en javascript, mais il semble que cela puisse être fait ... probablement assez facilement.

+0

la remercie travaillé comme un charme :) – ajsie

1

Comme un additif à la réponse de Doug, la façon dont vous le faire est:

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

'words [1]' serait 'mac', pas' mac os'. Je pense que vous voulez utiliser 'words.slice (1) .join (" ")' –

+0

en fait j'ai besoin d'une expression régulière pour l'utiliser sur des tableaux avec beaucoup d'éléments. pas seulement 2 éléments comme dans l'exemple. Avez-vous une idée de la façon d'accomplir cela? – ajsie

Questions connexes