1

我有一些 php 和 javascript,一切正常,我没有收到任何错误消息。我可以毫无错误地将数据发布到数据库。一切看起来都不错,但我不能在 php 中使用某些函数。

例子。

我有一个 textarea,我用 ajax 将它的数据发送到一个 php 文件。在 php 文件中需要使用 str_replace 函数。我可以在同一个 php 文件中将数据插入数据库而不会出现任何错误,但我尝试使用的函数(如 str_replace 或 mysqli_real_escape_string 等)不起作用。

原因是什么?

这里代码。

    $(".editBoxButton").click(function(){

        var yazi = jQuery('#editInput').val();

            $.ajax({
                type: 'POST' ,
                url : 'ajax/editEntry.php',
                    data: {
                    text: yazi,
                    },
                success : function(d){ 
                alert(d);
                location.reload();  //refresh
                }
            });

    });

ajax/editEntry.php

<?php

$yeniyazi=$_POST['text'];   
$yeniyazi = str_replace("\n", "<br>", $yeniyazi);

$s=$yeniyazi;

echo json_encode($s);

?>

在警报中,我仍然得到\n。它没有被替换。

我没有收到任何错误。只有 str_replace 不起作用,这是我的问题。期望 str_replace,它工作正常。

4

4 回答 4

1

你可能应该这样做:

$yeniyazi = nl2br($yeniyazi);

如果您真的想手动替换,请使用正则表达式。

$yeniyazi = preg_replace("/\r?\n/s", "<br />", $yeniyazi);

于 2013-08-07T07:14:43.170 回答
1

实际上,您必须用另一个转义 \ 或使用单引号。

$val = str_replace("\\n" , "<br>", $val);

或者您可以像这样在一行中执行此操作:

<?php 
echo json_encode(nl2br($_POST['text']));   
于 2013-08-07T07:15:51.340 回答
1

我希望这个例子对你有帮助:

<?php
// Order of replacement
$str     = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
$order   = array("\r\n", "\n", "\r");
$replace = '<br />';

// Processes \r\n's first so they aren't converted twice.
$newstr = str_replace($order, $replace, $str);

 // Outputs F because A is replaced with B, then B is replaced with C, and so on...
// Finally E is replaced with F, because of left to right replacements.
$search  = array('A', 'B', 'C', 'D', 'E');
$replace = array('B', 'C', 'D', 'E', 'F');
$subject = 'A';
echo str_replace($search, $replace, $subject);

// Outputs: apearpearle pear
// For the same reason mentioned above
$letters = array('a', 'p');
$fruit   = array('apple', 'pear');
$text    = 'a p';
$output  = str_replace($letters, $fruit, $text);
echo $output;
?>
于 2013-08-07T07:37:58.540 回答
0

\n我在 javascript 和 PHP 中使用也有问题。

当前环境:

  • PHP 5.3.10

  • Javascript

  • XHTML 1.0

问题:

....
if (rowcount == 5) {
    openShipments += '\n';
    rowcount = 0;
}
....

它在使用\\n波纹管时有效:

....
if (rowcount == 5) {
    openShipments += '\\n';
    rowcount = 0;
}
....
于 2015-12-11T20:09:57.653 回答