2016-07-15 11 views
1

Also ich sende einen String-Parameter an JavaScript-Funktion, und das Problem ist Leerzeichen und/oder Anführungszeichen. Ich kann beide arbeiten lassen, aber ich kann nicht herausfinden, wie ich beide Wege zur gleichen Zeit zur Arbeit bekomme.Parameter Codierung (Anführungszeichen und Leerzeichen)

Ich habe encodeURIComponent und decodeURIComponent zu meinem Beispiel verlassen, wie ich sie derzeit verwende, um mit Leerzeichen umzugehen.

Javascript:

function alertTitle(title){ 
    alert(decodeURIComponent(title)); 
} 

PHP:

//...fetching from MySQL 
$title = $row['title']; 

//If $title content is wrapped in single or double quotes, this will do: 
$title = str_replace("\"",""",$row['title']); 
//But if it's not, and has spaces, I have to wrap it in quotes for encodeURIComponent: 
$title = '\''.$row['title'].'\''; 
//And that obviously gives error in encodeURIComponent if $title happens already to have 
// single quotes 

//..And sending $title to javascript: 
echo '<a onclick="alertTitle(encodeURIComponent('.$title.'));" href="#">Alert</a>'; 

Also irgendwie muss ich Apostrophe auch, oder dann kommen mit einigen ganz anderen Ansatz entkommen. Aber das ist schon so nah, also wünschte ich, ich hätte gerade etwas Einfaches verpasst.

$ title might seist anykind von Folgender examples:

"Title"

"Title mit spaces"

'Title'

'Title' mit "all combined "

Titel" Blaablaa "hier

Und so weiter.

Alle Hinweise sind mehr als willkommen. Vielen Dank!

+1

'Echo json_encode ($ title)' und, falls erforderlich, führen, dass durch htmlspecialchars() als auch mit. –

+0

Danke Marc! Die beiden haben die Arbeit perfekt gemacht! Verdammt, wie einfach! – kaarto

Antwort

0

Fügen Sie einfach eine vorge ersetzen einfache Anführungszeichen :)

//...fetching from MySQL 
$title = $row['title']; 

//If $title content is wrapped in single or double quotes, this will do: 
$title = str_replace("\"","&quot;",$row['title']); 
$title = str_replace("\'","&#39;",$row['title']); 

//But if it's not, and has spaces, I have to wrap it in quotes for encodeURIComponent: 
$title = '\''.$row['title'].'\''; 
//And that obviously gives error in encodeURIComponent if $title happens already to have 
// single quotes 

//..And sending $title to javascript: 
echo '<a onclick="alertTitle(encodeURIComponent('.$title.'));" href="#">Alert</a>'; 
+0

Eigentlich habe ich das auch irgendwann versucht, aber aus irgendeinem Grund hat es nicht geholfen. :(Zum Glück hat Marc's Art perfekt funktioniert – kaarto