[英]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.