0

我将一段文本存储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 中。

%0a在通过 CURL 发布文本之前,如何可靠地将存储在 MySQL 中的换行符转换为?

4

2 回答 2

0

我发现换行符确实存储\r\n在 MySQL 中,所以我需要用 just 替换它\n(在接收端正确接受%0A)。

$text = str_replace("\r\n","\n",$text);
于 2013-10-23T15:27:09.353 回答
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.

于 2013-10-22T20:05:51.703 回答