Стопит скрипт

Тема в разделе "Как сделать...", создана пользователем SocMaster, 28 ноя 2013.

  1. SocMaster

    SocMaster aka Hakerok

    Регистр.:
    26 июл 2011
    Сообщения:
    202
    Симпатии:
    47
    Вот так странная проблема...если в тексте присутствует   дальше текст не читается.
    Вот скрипт
    PHP:
    $subjectenc $_GET['subjectenc'];
        
    $messageenc $_GET['messageenc'];
    $arr_tags explode(' '$subjectenc);
    $arr_tags1 explode(' '$messageenc);
    $arr array_merge($arr_tags,$arr_tags1);
    $col array_count_values($arr);

    $str_tag '';
    foreach (
    $col as $word => $count) {
    $words dhtmlspecialchars(trim($word));


        if (
    dstrlen($words) >= && $count >= 2  ) {
       
            
    $str_tag .= $words.',';
           
        }
    }
    $kws preg_replace("/(.*).$/""\\1"$str_tag);
    Текст без этого проблема читается полностью, но как только доходит до пробела все! дальше текст не читает
    Подскажите почему???
     
  2. JohnLemon

    JohnLemon Постоялец

    Регистр.:
    3 окт 2013
    Сообщения:
    52
    Симпатии:
    3
    php может не понимает у тебя его, чем тебя обычный пробел не устраивает ???
     
  3. mcdir

    mcdir

    Регистр.:
    6 ноя 2007
    Сообщения:
    202
    Симпатии:
    37
    PHP:
    $subjectenc $_GET['subjectenc'];
    $messageenc $_GET['messageenc'];

    $subjectenc preg_replace("/\&nbsp\;/i"" "$subjectenc);
    $messageenc preg_replace("/\&nbsp\;/i"" "$messageenc);

    $arr_tags explode(' '$subjectenc);
    $arr_tags1 explode(' '$messageenc);
    $arr array_merge($arr_tags,$arr_tags1);
    $col array_count_values($arr);

    $str_tag '';
    foreach (
    $col as $word => $count) {
        
    $words dhtmlspecialchars(trim($word));
        if (
    dstrlen($words) >= && $count >= 2  ) {
            
    $str_tag .= $words.',';
        }
    }
    $kws preg_replace("/(.*).$/""\\1"$str_tag);
    надеюсь ход мысли понятен ?
     
  4. SocMaster

    SocMaster aka Hakerok

    Регистр.:
    26 июл 2011
    Сообщения:
    202
    Симпатии:
    47
    Пробовал я так не катит. Я даже просто не могу вывести через echo GET данные если впереди стоит этот пробел:mad:
    Вот передаю
    messageenc= %20слово%20слово
    И все messageenc просто не выводит содержимое на экран...будто пустая переменная
     
  5. SocMaster

    SocMaster aka Hakerok

    Регистр.:
    26 июл 2011
    Сообщения:
    202
    Симпатии:
    47
    ["messageenc"]=> string(0) "" ["nbsp;словоd_слово_ммммм_ммммм"]=> string(0) "" ["nbsp;_слово_слово"]=> string(0) "" }
    Вот вывод GET
    Что то не пойму почему так...
     
  6. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    так амперсанд в get служит для разделения блоков переменная => значение.. т.о. "messageenc= %20слово%20слово" - это две переменные ("messageenc" и "nbsp;%20слово%20слово") с пустыми значениями.. т.е. всё правильно программа понимает..
     
  7. SocMaster

    SocMaster aka Hakerok

    Регистр.:
    26 июл 2011
    Сообщения:
    202
    Симпатии:
    47
    Да я понял...помогите поправить вот код на удалении амперсанда
    Код:
    function relatekw(subject, message) {
        if(isUndefined(subject) || subject == -1) {
            subject = $('subject').value;
            subject = subject.replace(/<\/?[^>]+>|\[\/?.+?\]|"/ig, "");
            subject = subject.replace(/\s{2,}/ig, ' ');
        }
        if(isUndefined(message) || message == -1) {
            message = getEditorContents();
            message = message.replace(/<\/?[^>]+>|\[\/?.+?\]|"/ig, "");
            message = message.replace(/\s{2,}/ig, ' ');
        }
        subject = (BROWSER.ie && document.charset == 'utf-8' ? encodeURIComponent(subject) : subject);
        message = (BROWSER.ie && document.charset == 'utf-8' ? encodeURIComponent(message) : message);
        message = message.replace(/&/ig, '', message).substr(0, 500);
       
        ajaxget('forum.php?mod=relatekw&subjectenc=' + subject + '&messageenc=' + message, 'tagselect');
    }
     
  8. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    Код:
    replace( /&(\w{3,6};)/g, '~$1' )
    ну а в бэкенде получившуюся псевдомнемонику (напр ~nbsp; ) превращаешь в нормальную (&nbsp; )..
     
    Последнее редактирование: 29 ноя 2013
  9. SocMaster

    SocMaster aka Hakerok

    Регистр.:
    26 июл 2011
    Сообщения:
    202
    Симпатии:
    47
    Спасибо всем решил проблему путем нахождения функции отправки текста и правки на удаления этого пробела
     
  10. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    А что за dhtmlspecialchars?
    Вообще, его не удалять надо, а через http://javascript.ru/encodeURIComponent пропускать, и не выборочно (utf8|ie), а в любом случае... Вдруг в сообщении какой-нибудь D&G или R&B окажется?
     
    SocMaster нравится это.