2016-07-15 3 views
1

Итак, я отправляю строковый параметр в функцию javascript, и проблема заключается в пробельных символах и/или кавычках. Я могу работать с одним из них, но не могу понять, как заставить оба способа работать одновременно.Кодирование параметров (кавычки и пробел)

Я оставил encodeURIComponent и decodeURIComponent к моему примеру, поскольку в настоящее время я использую их для работы с пробелами.

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>'; 

Так или иначе мне нужно бежать одиночные кавычки также, или потом с каким-то совершенно иным подходом. Но это уже так близко, поэтому я бы хотел, чтобы я просто пропустил что-то простое.

$ название может быть anykind из следующих примеров:

"Название"

"Название с пробелами"

'Название'

'Title' с «все в сочетании "

Название" Blaablaa "здесь

И так далее.

Все советы более чем приветствуются. Благодаря!

+1

'эхо json_encode ($ название)', и при необходимости запустить что через htmlspecialchars(), а также. –

+0

Спасибо Marc! Использование обоих из них отлично справилось с работой! Черт, как просто! – kaarto

ответ

0

Просто добавьте предварительно заменить, используя одиночные кавычки :)

//...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

На самом деле пробовал это тоже в какой-то момент, но по какой-то причине это не помогло. :(К счастью, путь Марка отлично работал – kaarto

Смежные вопросы