2013-02-16 5 views
0

Я работаю на WYSIWYG и секции для вставки исходного кода, как PHP/HTML/Perl/и т.д. ...

Я использую PHP де Geshi для выделите код через 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

+0

Люди не понимают, что '$ .ajax' делает сама кодировка. Можете ли вы отказаться от любых манипуляций, которые вы делаете на «коде»? Также, пожалуйста, отправьте примеры фактического и ожидаемого запроса и ответа – Alexander

ответ

0

Y введите следующую строку (код Perl):

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

Это вернуть эту строку:

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

Знака "+" падение.

+0

Проблема решена, используя encodeURIComponent() для опубликованного кода. – Pierre