我正在将一个文本块作为VARCHAR(300)存储在一个MySQL数据库中。用户通过textarea发布此文本,并在插入之前使用mysql_real_escape_string对其进行转义。
然后,我将使用以下PHP代码,通过CURL将此文本删除并发布:
curl_setopt($curl_handlers[$id], CURLOPT_POSTFIELDS, array("Text" => $text));唯一的问题是,接收到的URL期望换行符被编码为%0a。我假设换行符以\r\n的形式存储在MySQL中。
在通过CURL发布文本之前,如何可靠地将存储在MySQL中的换行符转换为%0a?
发布于 2013-10-22 20:05:51
似乎你需要urlencode你的变量。
$urlencoded_text = urlencode( $text );
curl_setopt($curl_handlers[$id], CURLOPT_POSTFIELDS, array("Text" => $urlencoded_text ));但是,\r\n将被转换为%0D%0A (\r => %0D,\n => %0A),因此如果您确实希望只发送%0A进行换行,则可能需要清理它。
更新:
要将\r\n转换为\n,只需使用PHP的str_replace函数:
$text = str_replace( "\r\n", "\n", $text );注意,解释\r\n需要双引号。
然后:
$urlencoded_text = urlencode( $text );$urlencoded_text现在只包含%0A而不是\r\n。
发布于 2013-10-23 15:27:09
我发现在MySQL中,换行符确实是以MySQL的形式存储的,所以我需要用\n (在接收端被正确地接受为%0A )替换它。
$text = str_replace("\r\n","\n",$text);https://stackoverflow.com/questions/19527108
复制相似问题