转换MySQL数据库中的换行符以进行CURL连接

时间:2013-10-22 19:55:19

标签: php mysql curl

我将一段文本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

2 个答案:

答案 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);