Как перемешать данные одной строки, разделенные знаком припинания

Тема в разделе "Решение различных задач по парсингу", создана пользователем rogodessa, 5 фев 2012.

  1. rogodessa

    rogodessa New Member Пользователи

    Регистрация:
    15 авг 2010
    Сообщения:
    17
    Здравствуйте!
    Подскажите, пожалуйста, решение такой задачи.
    Итак, есть начальные данные:
    Код:
    Антиблокировочная система (ABS); система курсовой устойчивости (ESP); подушки безопасности: 4 и более; антипробуксовочная система (TCS); иммобилайзер; сигнализация; CD-магнитола; диски: литые; датчик света; круиз-контроль; кондиционер; бортовой компьютер
    Надо все что разделено знаком ";" перемешать в случайном порядке.
    Делаю следующим образом:
    1. оправляю PHP скрипту следующую строку
    Код:
    komplekt=<SHAKESTRINGS><PHP_SCRIPT=http://mydomen/__myscripts/funkciya_zameny.php>strtkomplekt=<GETMORECONTENT><URL="<CD_DOCURL!>"><START="<h2>Комплектация</h2>"><STARTCOUNT="0"><END="</p>"><ENDCOUNT="0"><PARAMS="htmtotxt"></GETMORECONTENT></PHP_SCRIPT></SHAKESTRINGS>
    2. Скрипт получает данные и совершает замену ";" на символ переноса строки "\n"
    PHP:
    <?php
    $strtkomplekt 
    $_POST['strtkomplekt'];
    $mykomplekt str_replace(";","\n",$strtkomplekt);
    echo 
    ''.$mykomplekt.'';
    ?>
    И все бы вроде хорошо, НО в CD возвращается только первая строка.
    Как быть?
    Может есть какое-то другое решение этой задачи?
     
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте, попробуйте так:
    HTML:
    [REPLACE({br}|;)]<SHAKESTRINGS>Антиблокировочная система (ABS)
    система курсовой устойчивости (ESP)
    подушки безопасности: 4 и более
    антипробуксовочная система (TCS)
    иммобилайзер; сигнализация; CD-магнитола
    диски: литые
    датчик света
    круиз-контроль
    кондиционер
    бортовой компьютер</SHAKESTRINGS>[/REPLACE]
    Если что, пишите, добавлю новый макрос...
     
  3. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    По поводу вашего варианта (если интересно).
    Данные скрипту должны отсылаться в одну строку.
    И примите к сведению вот это Ссылки недоступны для гостей
     
  4. rogodessa

    rogodessa New Member Пользователи

    Регистрация:
    15 авг 2010
    Сообщения:
    17
    И на тему подписался, а ответ все равно пропустил :)
    Спасибо за подсказки...

    Скрипту я отсылаю одной строкой - с этим все нормально.
    И сам сам скрипт обрабатывает все ОК.
    Возвращает результат CD.
    А вот CD почему-то берет из результата только первую строку...

    Сейчас парсинг одного из проектов закончиться, испытаю первый предложенный вами вариант и отпишусь о результатах.
     
  5. rogodessa

    rogodessa New Member Пользователи

    Регистрация:
    15 авг 2010
    Сообщения:
    17
    к сожалению такая конструкция не помогла:

    Код:
    komplekt=[REPLACE({br}|;)]<SHAKESTRINGS><GETMORECONTENT><URL="<CD_DOCURL!>"><START="<h2>Комплектация</h2>"><STARTCOUNT="0"><END="</p>"><ENDCOUNT="0"><PARAMS="htmtotxt"></GETMORECONTENT></SHAKESTRINGS>[/REPLACE]
    Возвращает ->
    Код:
    [REPLACE({br}|;)]Антиблокировочная система (ABS)
     
    Последнее редактирование: 6 фев 2012
  6. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Еще раз обращаю ваше внимание на этот пост Ссылки недоступны для гостей !!!

    Нужно понять, что заместо PHP_SCRIPT надо использовать PHP_SCRIPT_3 или PHP_SCRIPT_4, а заместо REPLACE надо использовать BEFORE_IMG_REPLACE.

    Теперь все ок?
     
  7. rogodessa

    rogodessa New Member Пользователи

    Регистрация:
    15 авг 2010
    Сообщения:
    17
    Не могу сказать... буду дома - буду пробовать.

    Я смотрю что уже достал вас (!!!) :) , но все равно мне не понятно зачем применять PHP_SCRIPT_3 или PHP_SCRIPT_4? :confused:

    Я использую приблезительно такую структуру шаблона (точную копию не могу выложить так как нахожусь не дома)

    Код:
    <PHP_SCRIPT_2=http://скрипт записи в БД.php>
    параметр_1=
    параметр_2=
    параметр_3=
    параметр_4=
    параметр_5=<PHP_SCRIPT=http://mydomen/__myscripts/funkciya_zameny.php>data=<GETMORECONTENT><URL="<CD_DOCURL!>"><START="<h2>Комплектация</h2>"><STARTCOUNT="0"><END="</p>"><ENDCOUNT="0"><PARAMS="htmtotxt"></GETMORECONTENT></PHP_SCRIPT>
    </PHP_SCRIPT_2>
    
    проблема возникает на стадии возврата от скрипта параметра data - CD принимает от скрипта только первыую строку. Т.е. мне еще нечего перемешивать и негде совершать замену {br}|;

    то что должен после получения результата и перемешивания применить BEFORE_IMG_REPLACE - согласен, вину невнимательного изучения порядка признаю.
    В конечном итоге (по идее) должно быть так:
    Код:
    параметр_5=[BEFORE_IMG_REPLACE:({br}|;)]<SHAKESTRINGS><PHP_SCRIPT=http://mydomen/__myscripts/funkciya_zameny.php>data=<GETMORECONTENT><URL="<CD_DOCURL!>"><START="<h2>Комплектация</h2>"><STARTCOUNT="0"><END="</p>"><ENDCOUNT="0"><PARAMS="htmtotxt"></GETMORECONTENT></PHP_SCRIPT></SHAKESTRINGS>[/BEFORE_IMG_REPLACE]
    т.е. парсим -> отправляем результата скриту -> скрипт заменяет ; на \n -> скрипт возвращает список строк -> перемешиваем строки -> заменяем перенос строки на ";" -> записываем в базу с помощью PHP_SCRIPT_2

    Я, конечно, извеняюсь, что вам не удается достучаться до моей тупой головы, но все равно попрошу помочь, так как уже не раз сталкивался с такой задачей, но так и бросал не найдя решение.
     
  8. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Не надо на себя наговаривать, все хорошо.
    Поймите, что функции выполняются по порядку, вот порядок Ссылки недоступны для гостей
    Скиньте проект на sbfroot@gmail.com я попробую вам наладить это.
     
  9. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Ответил на почту, все хорошо теперь?
     
  10. rogodessa

    rogodessa New Member Пользователи

    Регистрация:
    15 авг 2010
    Сообщения:
    17
    Сергей, спасибо!
    Все отлично. Нужный результат достигнут! :)
    Сразу хочу уточнить:
    1. В дальнейшем в <SHAKE( ; )> можно использовать любой разделитель?
    2. Последующие обновления не повлияют на внесенные изменения в CD?

    Еще раз спасибо!
     
  11. Nik7

    Nik7 New Member Пользователи

    Регистрация:
    16 июн 2013
    Сообщения:
    1
    Добрый вечер.
    Извиняюсь, что подымаю старый топик. Но столкнулся с похожей проблемой. Я тут так и не понял как решилась проблема.
    Во общем у меня все тоже самое только вместо ";" может быть "," или "." есть строка к примеру:

    "самые роскошные автомобили, дорогие авто, самые быстрые автомобили"

    нужно чтобы словосочетания случайным образом менялись местами
    Подскажите пожалуйста, как можно решить это?


    Все вроде разобрался - ответ крылся в предыдущем посте :)
     
    Последнее редактирование: 17 июн 2013

Поделиться этой страницей