2013-02-16 50 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