Страница 1 из 11
Модератор форума: JonMagon 
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » Помогите разобрать текст на части (Нужно разобрать текст на составляющие без участия PHP)
Помогите разобрать текст на части
Vlad-Soft
Сообщений: 4
Репутация: 5

Сообщение # 1 | 09:53:51
Есть импортированный с OZ список товаров. Но он импортируется в виде простого текста такого вида:

Цитата
НОМЕР ТОВАРА~НАЗВАНИЕ~~КРАТКОЕ ОПИСАНИЕ~URL КАРТИНКИ~URL СТРАНИЦЫ ТОВАРА

И так энное количество строк.
Вопрос: Как выбирать из этого случайную строку и разделять её на составляющие присваивая значения переменным. В программировании я не полный ноль (владею Visual Basic), но вот с js не дружу. Подскажите в какую сторону копать (желательно ссылками на примеры).

Подозреваю, что надо загнать всё в массив и там разлагать.

Вот страница с результатом импорта: ссылка
Dogica
Сообщений: 1230
Репутация: 352
Уровень замечаний:

Сообщение # 2 | 14:57:37
а какой формат (расширение) у полученного файла... может быть все же проще сначала посредством скажем Эксела привести файл к стандартному виду CSV?
(думаю для этого понадобится использовать функцию Заменить.. (заменить все точки в файле на запятые)
?

какова конечная цель?
вы хотите использовать данный файл для подгрузки товаров в магазин или что то другое?


WWW.DOGICA.COM / WWW.DOGICA.ORG
Vlad-Soft
Сообщений: 4
Репутация: 5

Сообщение # 3 | 15:46:17
Цитата Dogica ()
а какой формат (расширение) у полученного файла... может быть все же проще сначала посредством скажем Эксела привести файл к стандартному виду CSV? (думаю для этого понадобится использовать функцию Заменить.. (заменить все точки в файле на запятые)
?

какова конечная цель?
вы хотите использовать данный файл для подгрузки товаров в магазин или что то другое?

Импортирую с магазина с помощью "Импорта удаленного кода". Магазин предоставляет ссылку для импорта следующего вида:

Цитата
Скрипт экспорта товаров доступен по адресу http://oz.by/data/export.phtml?type=<тип товара>&limit=<кол-во изделий>&topic=<подраздел>&img=<размер картинки> и отдается в текстовом формате (в конце строк стоит символ "\n"). Список состоит из строк вида "ID~Название~Автор\Актеры~Описание~Изображение~Ссылка" (параметры разделены символом тильда "~").
Я хочу чтобы из этих данных генерировался случайный банер.

Половину работы я уже сделал:

Код
<div id="my"></div>
<script>
var impstr = [];
var texti = '[b]ТЕКСТ ИМПОРТИРУЕМЫЙ С ПОМОЩЬЮ RCODE_1';
var target = '.html'; // цель поиска
var pos = 0;
alert (texti);
while(true) {
  var foundPos = texti.indexOf(target, pos);
  if (foundPos == -1) break;
  impstr.push(texti.substring(pos,foundPos+5));
  pos = foundPos + 6;
}
var rand = Math.floor( Math.random() * impstr.length );
var texti = impstr[rand]+"~";
var target = '~';
var strvar = [];
var pos = 0;
while(true) {
  var foundPos = texti.indexOf(target, pos);
  if (foundPos == -1) break;
  strvar.push(texti.substring(pos,foundPos));
  pos = foundPos + 1;  
}
document.getElementById('my').innerHTML = "<a href='"+ strvar[5] +"' target='_blank'><table border='1' width='200'><tr><td>" + strvar[1] + "</td></tr><tr><td><img src='" + strvar[4] + "' /><br />"+ strvar[3]+"</td></tr></table></a>";
</script>

Добавлено (16 Сен 2014, 15:46:17)
---------------------------------------------
Теперь осталось разобраться как передать значение $RCODE_1$ в переменную texti
Кодтак:
var texti = '$RCODE_1$';
или так:
var texti = $RCODE_1$; не работает

Dogica
Сообщений: 1230
Репутация: 352
Уровень замечаний:

Сообщение # 4 | 16:13:18
ясно (насколько позволяют знания)
я думал вы хотите загнать этот файл в магазин...
интересная идея у вас! Респект
к сожалению как вам помочь не знаю но терпение думаю окупится сторицей
=)


WWW.DOGICA.COM / WWW.DOGICA.ORG
Vlad-Soft
Сообщений: 4
Репутация: 5

Сообщение # 5 | 16:55:10
Ура!!!!

Проблема решена.


Код
<div id="mydata"  style='display:none;'>$RCODE_1$</div>  // загоняем импортированные данные в скрытый div

<script>
var impstr = [];
var texti = document.getElementById("mydata").innerText;  // выдираем данные из div в переменную
var target = '.html';   
var pos = 0;

// разбиваем текст на нужные строки с данными о товаре и складываем в массив
while(true) {
   var foundPos = texti.indexOf(target, pos);
   if (foundPos == -1) break;
   impstr.push(texti.substring(pos,foundPos+5));
   pos = foundPos + 6;
}
var rand = Math.floor( Math.random() * impstr.length );  // выбираем случайный товар из массива
var texti = impstr[rand]+"~";  // добавляем в конце выбранной строки ~ (так надо, а то не будет работать как надо)
var target = '~';
var strvar = [];
var pos = 0;

// разбиваем строку на составляющие
while(true) {
   var foundPos = texti.indexOf(target, pos);
   if (foundPos == -1) break;
   strvar.push(texti.substring(pos,foundPos));
   pos = foundPos + 1;   
}

// Создаём строку с html-разметкой и выбранными данными товара и вставляем в div в который мы импортировали данные магазина
document.getElementById('mydata').innerHTML = "<a href='"+ strvar[5] +"' target='_blank'><table border='1' width='200'><tr><td>" + strvar[1] + "</td></tr><tr><td><img src='" + strvar[4] + "' /><br />"+ strvar[3]+"</td></tr></table></a>";
document.getElementById('mydata').style.display = "block"; // делаем div видимым
</script>


Вуаля. Рекламный банер готов. Он берёт случайный товар из списка в случайном порядке при загрузке страницы.
Может кому пригодится.
Значение строк массива для формирования кода банера: strvar[0] - № товара; strvar[1] - заголовок; strvar[2] - пустой; strvar[3] - описание товара; strvar[4] - ссылка на картинку товара; strvar[5] - ссылка на страницу товара в магазине.

Возможно мой код грубый, но извиняйте. Первый раз пишу на Java Script.

Добавлено (16 Сен 2014, 16:55:10)
---------------------------------------------
Результат работы скрипта можно посмотреть на моем сайте http://lokalizator.ucoz.ru/ справа блок "Рекомендуем"
Сообщение отредактировал Vlad-Soft - Вторник, 16 Сен 2014, 17:15:59
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » Помогите разобрать текст на части (Нужно разобрать текст на составляющие без участия PHP)
Страница 1 из 11
Поиск: