2013-02-16 44 views
0

我工作的一個所見即所得和部分插入像PHP/HTML /的Perl /等源代碼

我使用PHP德爲隔世通過jQuery突出顯示代碼。

一切正常,我得到我的代碼,但是我在返回的代碼中丟失了字符「+」。

我認爲問題來自於「$ .post」解釋「+」,例如在發送中添加一個新參數,我只是錯了。

我甚至沒有POST或GET是獲取源代碼,有很多奇怪的字符正確的解決方案。我很感興趣,新的想法...

jQuery代碼:

$('#valider_code').click(function() { 
    // On selectionne le contenue du textarea 

    var code = $("#code").val(); 
    code = addslashes(code); 
    // On cache le div 
    $('#input_code').hide(); 

    $.post('/get_geshi.php', { "code" : code, "langage" : langage }, function(data) { 

    data = data.replace(/\n|\r|\r\n/g, '<br>'); 
     // On insert le code 
    var embed = '<div id="code_source">'+ data +'</div>'; 
     if($.browser.msie) { 
      var selection = editor.contentWindow.document.selection; 
      var range = selection.createRange(); 
      range.pasteHTML(embed); 

     } 
     else { 
     execCommand("inserthtml", embed); 
     } 
     langage = ""; 
     code = $("#code").val(''); 


    }); // Fin get 
    return false; // prevent default 
    }); 

get_geshi.php

<?php 
require_once('geshi.php'); 

$source = stripslashes(urldecode($_POST["code"])); 

$language = $_POST["langage"]; 

$geshi =& new GeSHi($source, $language); 
echo $geshi->parse_code(); 

?> 
+0

嘗試使用以下代碼對PHP返回的文本進行編碼:http://php.net/manual/fr/function.htmlentities.php – sdespont 2013-02-16 09:27:00

+0

人們不明白'$ .ajax'本身就是編碼。你可以放棄你在'code'上做的任何操作嗎?此外,請發佈實際的和預期的請求和響應示例 – Alexander 2013-02-16 10:25:27

回答

0

y輸入該行(Perl代碼):

$line =~ /\s+(\S+)$/; 

它返回該行:

$line =~ /\s (\S)$/; 

的 「+」 下降。

+0

問題已解決,在發佈的代碼上使用encodeURIComponent()。 – Pierre 2013-02-17 15:56:24