我将一段文本VARCHAR(300)
存储在MySQL数据库中。用户通过textarea发布此文本,并在插入前使用mysql_real_escape_string
进行转义。
然后我将这篇文章和这个PHP代码通过CURL发布:
curl_setopt($curl_handlers[$id], CURLOPT_POSTFIELDS, array("Text" => $text));
唯一的问题是,接收网址要求将换行符编码为%0a
。我假设换行符在MySQL中存储为\r\n
。
在通过CURL发布文本之前,如何可靠地将存储在MySQL中的换行符转换为%0a
?
答案 0 :(得分:0)
好像你需要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
。
答案 1 :(得分:0)
我发现换行确实存储在MySQL中\r\n
,所以我需要用\n
替换它(在接收端正确接受为%0A
)
$text = str_replace("\r\n","\n",$text);