[英]Parsing Line Breaks in PHP/JavaScript
編輯:好的,謝謝您的幫助。 根據zerkms的建議,我設法插入了<br>
標記而不是回車符,因此它可以在頁面上正確顯示,並且不會破壞javascript。 現在的問題是,當用戶單擊此文本時,它變為文本區域,因此可以進行內聯編輯。 但是,文本字符串現在在其中顯示了標簽,而不僅僅是在多行上顯示可編輯的文本。
有什么建議么?
原始問題:我的PHP應用程序中有一個文本區域,用戶可以在其中輸入項目注釋。 有時這是通過PHP在頁面上顯示的,有時是通過javascript顯示的。 問題是,如果注釋跨越多行(即用戶在文本區域中輸入注釋時按下Enter鍵),則會導致JS失敗。 用PHP完成就可以了。
有問題的代碼行是:
var editnotes='<textarea class="desc_text" style="width:20em;" id="notes_editor"><?php print $notes; ?></textarea>';
因此,如果注釋在多行中,則PHP將尋呼機構建為:
var editnotes='<textarea class="desc_text" style="width:20em;" id="notes_editor">This is
a test note
over multiple lines
</textarea>';
這顯然會導致js問題。 所以我的問題是,我該怎么做才能防止這種情況? 由於代碼是在PHP甚至還未到達瀏覽器之前就構建的,因此我認為最好的方法可能是在PHP中對其進行解析,以使輸出更像這樣:
var editnotes='<textarea class="desc_text" style="width:20em;" id="notes_editor">This is<br/>a test note<br/>over multiple lines<br/></textarea>';
這樣行嗎? 我該怎么辦?
謝謝
從nl2br()開始,第二個建議是在所有換行符后附加\\。 以某種方式:
preg_replace('!([\r\n]+)!', '\\\$1', $text);
要明確的是,樣本:
var baz = 'foo
bar';
現在變成:
var baz = 'foo\
bar';
使用json_encode()輸出javascript的值。
var editnotes = <?php echo json_encode($str); ?>;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.