0

我将一个 PHP 字符串传递给 onclick。此文本来自 YouTube(视频说明)。在某些情况下,字符串会破坏代码。

字符 \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); 打破一切:(

4

2 回答 2

3

您只需要两个功能:

两者都在行动:

echo "<span onclick='".htmlspecialchars("update_hits(".json_encode($id).");vidtxt=".json_encode($desc6).";openVideo(".json_encode($v).",".json_encode($sn." : ".$title).",0)", ENT_QUOTES)."'><img src='".htmlspecialchars($apng, ENT_QUOTES)."' border='0' />Play large</span>";
于 2012-06-07T18:22:26.980 回答
0

.addslashes($title)."\",0) 不应该是"\""吗

于 2012-06-07T18:22:34.180 回答