从PHP字符串中逃脱php eol

时间:2018-02-15 10:12:27

标签: php sql string escaping

我想要从db

中选择转义字符串PHP_EOL或双引号"\n"

我试过了:

<?php
    header("Content-Type: text/plain");
    $str = 'Hello\nWorld!';
    echo $str;
    sqlInsert("insert ... (str) values ('{$str}')");

输出有效

Hello\nWorld!

但是当我想从数据库中获取它时:

$str2  = sqlget("select ... str");
echo ''.$str2;

会:无效

Hello
World!

有什么问题!

1 个答案:

答案 0 :(得分:1)

在单引号或双引号字符串中,SQL不能用作EOL的PHP​​。

您可以/或:

<强> 1。在数据库中存储反斜杠:

你需要逃避反斜杠:

$str = 'Hello\nWorld!';
echo $str ;
$str = str_replace('\\n','\\\\n',$str);
sqlInsert("insert ... (str) values ('{$str}')");

<强> 2。转换输出:

通过litteral \n替换换行符:

$str = get_from_sql(...);
$str = str_replace("\n", '\n', $str);