簡體   English   中英

在PHP / JavaScript中解析換行符

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM