转换 MySQL 数据库中用于 CURL 连接的换行符


Converting line breaks in MySQL database for CURL connection

我正在将文本块作为VARCHAR(300)存储在MySQL数据库中。用户通过文本区域发布此文本,并在插入之前使用mysql_real_escape_string对其进行转义。

然后我提取此文本并通过 CURL 使用此 PHP 代码发布它:

curl_setopt($curl_handlers[$id], CURLOPT_POSTFIELDS, array("Text" => $text));

唯一的问题是,接收 URL 期望换行符编码为 %0a 。我假设换行符在 MySQL 中存储为'r'n

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

似乎您需要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

我发现换行符确实以'r'n的形式存储在 MySQL 中,所以我需要将其替换为 'n(在接收端正确接受为%0A)。

$text = str_replace("'r'n","'n",$text);