我有一個頁面,用戶在一天結束時添加他們的報告。他們點擊「添加報告」按鈕,然後顯示他們需要鍵入報告的textarea。他們進入並保存後,我將它發送到數據庫。但在寫入數據庫之前,我使用這個函數來轉義字符:在php中轉義字符,javascript
db::$conn->real_escape_string($str);
並報告它保存成功。當我使用MySQL Workbench打開數據庫表時,我看到一行報告,如果它包含新行,它不會顯示,但是如果我將光標移到它上面,它會顯示工具提示,其中包含新行。
之後,我需要顯示報告表並啓用編輯。問題是,當我點擊編輯按鈕時,它應該顯示textarea和報告,但是我得到空的textarea。我發現它是關於轉義角色的問題。這是我如何呈現表格中的編輯按鈕。
$report = $row['user_report'];
$report = str_replace('"', '\"', $report);
$report = str_replace("'", "\'",$report);
$report = htmlspecialchars($report, ENT_QUOTES);
$r[] = '<a onclick="$(\'#editReport\').val(\''.$report.'\'); $(\'#editComment\').attr(\'onClick\', \'EditReport('.$row['id'].'); return;\');" class="btn-action glyphicons pencil btn-info" data-toggle="modal" data-target=".bs-modal-ld"><i></i></a>';
$ r []然後被緩存以輸出數據,但最主要的是這個javascript。問題是新的線路,我不知道如何逃脫它們。 這是它如何生成HTML頁面。只要提一下,如果報告沒有新行寫就可以正常工作。
<a onclick="$('#editReport').val('Fixed bugs on \"User report\" page.
Developing Transaction page.
Developing admin users page.'); $('#editComment').attr('onClick', 'EditReport(100); return;');" class="btn-action glyphicons pencil btn-info" data-toggle="modal" data-target=".bs-modal-ld"><i></i></a>
而這裏的新行引起了問題。
,我輸入的報告是這樣的一個:
Fixed bugs on "User report" page.
Developing Transaction page.
Developing admin users page.
但如果我喜歡這個輸入,它的工作原理:
Fixed bugs on "User report" page. Developing Transaction page. Developing admin users page.
編輯: 我與另一str_replace函數固定它(「\ n 「,」\\ n「,$ report); 它現在的作品:D
我想過這種方式,但我現在想這樣做,並將其作爲最後的手段:D – clzola