将所有 html 空格保留在 php mysql 中


Keep all html whitespaces in php mysql

我想知道如何在php中保留文本区域的所有空格(用于发送到数据库(,然后回显然后稍后返回。我想像堆栈溢出一样做,对于代码,哪个是最好的方法?

现在我使用它:

$text = str_replace(' ', '&nbs p;', $text);

它保留了' '空格,但我不会用mysql_real_escape和其他"注入预防"方法一起测试它。

为了更好地理解,我想稍后从 db 回显如下:

 function jack(){
    var x = "blablabla";
 }

谢谢你的时间。

代码块

如果您尝试重新创建代码块,例如:

function test($param){
    return TRUE;
}

然后,您应该在html中使用<pre></pre>标签:

<pre>
    function test($param){
        return TRUE;
    }
</pre>

作为普通html即使存在多个空格/换行符/制表符,也只会显示一个空格。pre标记内部的空间将按原样显示。

目前,您的html将如下所示:

function test($param){
&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;
}

我建议这是不可取的...

逃避

使用mysql_real_escape时,会将换行符转换为纯文本'n'r'n。这意味着您的代码将输出如下内容:

function test($param){'n return TRUE;'n}

<pre>function test($param){'n    return TRUE;'n}</pre>

要解决此问题,您必须将'n'r'n字符串替换为换行符。

假设您将使用pre标签:

echo preg_replace('#('''r'''n|'''n)#', "'n", $escapedString);

如果要切换到html换行符,则必须"'n"切换到<br />。如果是这种情况,您还想切换 带有&nbsp;的空格字符 - 我建议使用 pre 标签。

试试这个,效果很好

$string = nl2br(str_replace(" ", " &nbsp;", $string));
echo "$string";