![](/img/trans.png)
[英]while ($row = mysqli_fetch_array($result)) + JAVASCRIPT error
[英]String Replace not working with a MySQLi Fetch Row Result
PHP函数str_replace()
无法使用mysqli_fetch_row()
结果的输出。 它只输出原始字符串而没有任何更改。
假设$row[1] = Hello \\\\r\\\\n This needs it's own line BOO.
码:
$result = get_posts($database, $_GET['id'], $page);
while($row = mysqli_fetch_row($result)) {
echo str_replace('\\r\\n', '<br>', $row[1]);
}
输出:
Hello \\r\\n This needs it's own line BOO.
但是在下面,当我附加其他字符串时,它会正确替换,但原始变量不会。
码:
$result = get_posts($database, $_GET['id'], $page);
while($row = mysqli_fetch_row($result)) {
echo str_replace('\\r\\n', '<br>', $row[1].'\\r\\n For some reason I replace.');
}
输出:
Hello \\r\\n This needs it's own line BOO. <br> For some reason I replace.
我也尝试使用nl2br()
但结果保持不变,但是,将句子本身的字符串用引号粘贴到str_replace()
起作用。
我认为这与原始变量有关,我需要对其进行某种修复。 欢迎使用JQuery和Javascript作为解决方案的一部分。 如果需要更多代码,请在注释中请求。
我猜想这与从数据库中提取数据的编码有关。 更换之前,请尝试将其编码为UTF-8。
while($row = mysqli_fetch_row($result)) {
echo str_replace('\\r\\n', '<br>', utf8_encode($row[1]));
}
PHP函数str_replace()无法使用mysqli_fetch_row()结果的输出。
不, 您 输入的参数不正确 :-)
假设
$row[1] = Hello \\\\r\\\\n This needs it's own line BOO.
如果那里的数据中实际上有两个反斜杠,那么搜索表达式中也需要有相同数量的反斜杠。
现在好吗 我们来看一下:
str_replace('\\r\\n', '<br>', $row[1]);
让我们采用第一个参数,并输出它:
echo '\\r\\n';
输出: \\r\\n
–哎呀,只是一个反斜线……?
反斜杠是转义字符 ,并且要从中获得特殊含义-即使在单引号中也要在其前面加上另一个反斜杠。 因此,这里的内容是第一个反斜杠转义第二个反斜杠,因此在实际的已解析文本文字中留下一个反斜杠。
因此,您必须将这些反斜杠加倍 ,以使它们实际上意味着“两个文字反斜杠”:
echo '\\\\r\\\\n';
啊,输出\\\\r\\\\n
…不太好。
因此,您实际要用于替换的是
str_replace('\\\\r\\\\n', '<br>', $row[1]);
(在这里只使用三个反斜杠也是可行的,因为第一个反斜杠会掩盖第二个反斜杠,而第三个反斜杠将是“独立的”,并按字面意义使用,因为在该斜杠后没有一个字符具有特殊含义,用引号引起来的字符串。但是为了避免混淆-并且出于原则性原则-最好将它们都加倍。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.