我傳遞一個PHP字符串到onclick。此文本來自YouTube(視頻說明)。在某些情況下,字符串會破壞代碼。PHP的字符串到JavaScript可以打破代碼 - 一些字符,我猜,是問題?
字符\ n \ r'和「被刪除,因此並不清楚性格的原因。
echo "<span onclick='update_hits(\"".$id."\");vidtxt=\"".$desc6."\";openVideo(\"".$v."\",\"".$sn." : ".addslashes($title)."\",0)'><img src='".$apng."' border='0' />Play large</span>";
我已經試過所有我能想到的解決問題,但都沒有成功。
$desc6=nl2br($desc6);
$desc6=preg_replace('/[\x00-\x1f]/', '', $desc6);
$desc6=preg_replace('/\xc2[\x80-\x9f]/', '', $desc6);
$desc6=preg_replace('/[\x7f]/', '', $desc6);
$desc6=nl2br($desc6);
$desc6 = iconv("UTF-8", "UTF-8//IGNORE", $desc6);
$desc6=preg_replace('~\p{C}+~u', '', $desc6);
$desc6=htmlspecialchars($desc6);
$desc6=preg_replace('/[\x00-\x1F\x7F]/', '', $desc6);
$desc6=ereg_replace('[[:cntrl:]]', '', $desc6);
$desc6 = str_replace(chr(127), "", $desc6);
$desc6=preg_replace('/\bKa(\W|$)/i', '', $desc6);
$desc6=addslashes($desc6);
大多數描述字符串做工精細,即使是那些在其他語言的文字。但有時事情打破這一點。
剝離只是ASCII碼,這意味着我無法展示非英語語言,確實有效。
$desc6=preg_replace('/[^(\x20-\x7F)]*/','', $desc6);
下使所有描述的工作,但像韓文顯示不正確:
$desc6 = iconv("ISO-8859-1", "UTF-8//IGNORE", $desc6);
任何想法?
ps:
$ desc6 = json_encode($ desc6); 打破了所有:(
你甚至不知道這是代碼做什麼?我的意思是,你多次執行一些步驟(例如'nl2br',移除0x7F)。 – Gumbo
他們正在過濾UTF。當我找到解決方案時,我會刪除冗餘。 – Blah479
你的HTML頁面確保它的字符集是UTF-8嗎? ''?你也有一個破壞你的代碼的例子字符串?鏈接到您的應用程序? –