我正在将文本块作为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);