Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Регулярное выражение на JavaScript
 
 автор: kosta_in_net   (04.03.2011 в 07:28)   письмо автору
 
 

Помогите составить регулярку. В яваскрипте опыта мало. Нужно строку
42=1836.jpg=Samsung S5230 Star Black=S5230
превратить в
<div><p><a href='/shop/detail.php?item=42' onClick='detail(this.href); return false;'><img src='/small/img/shop/1836.jpg' alt='Samsung S5230 Star Black'></a></p>S5230 р.</div>
Делаю так:
var compact_text='42=1836.jpg=Samsung S5230 Star Black=S5230';
var re = /([^=])*=([^=])*=([^=])*=([^=])*/;
var string="<div><p><a href='/shop/detail.php?item=\0' onClick='detail(this.href); return false;'><img src='/small/img/shop/\1' alt='\2'></a></p>\3</div>";
alert(compact_text.replace(re,string));

алерт выдает:
<div><p><a href='/shop/detail.php?item=
Остальное теряется.
Как правильно сделать?
Суть страданий в том, чтобы получать от сервера компактный код и уже на стороне клиента превращать его в HTML

  Ответить  
 
 автор: sim5   (04.03.2011 в 07:46)   письмо автору
 
   для: kosta_in_net   (04.03.2011 в 07:28)
 

<script>
var dat = [42,"1836.jpg","Samsung S5230 Star Black","S5230"];
var string = "<div><p><a href='/shop/detail.php?item="+dat[0]+
      "' onClick='detail(this.href); return false;'><img src='/small/img/shop/"+dat[1]+
      "' alt='"+dat[2]+"'></a></p>"+dat[3]+"</div>";
alert(string)
</script>

  Ответить  
 
 автор: kosta_in_net   (04.03.2011 в 08:18)   письмо автору
 
   для: sim5   (04.03.2011 в 07:46)
 

ну, это-то понятно. Только хотелось бы не слать готовый массив. так как это то же немного лишних байт (за счет кавычек, например).

  Ответить  
 
 автор: sim5   (04.03.2011 в 08:53)   письмо автору
 
   для: kosta_in_net   (04.03.2011 в 08:18)
 

Ага, а например ваши = это не лишние байты, да? Делайте что хотите.
Вы вместо разбиения строки на массив и его использование, запускаете довольно таки затратный механизм, для чего...

  Ответить  
 
 автор: kosta_in_net   (08.03.2011 в 08:13)   письмо автору
 
   для: sim5   (04.03.2011 в 08:53)
 

чуть меньше лишних байт. А затратный механизм включался бы 1 раз на стороне клиента и нагрузки ему создать не успел бы.
Тут еще был спортивняй интерес - поработать с регулярками на яваскрипте. Ну да бог с ними. Как сделал, так сделал. А поэкспериментировав с регулярками и не добившись толку, сделал, как предложили вы.

  Ответить  
 
 автор: sim5   (08.03.2011 в 11:08)   письмо автору
 
   для: kosta_in_net   (08.03.2011 в 08:13)
 

Да уж, по принципу - подумаешь, попыхтит, нихрена с ним не случится. ;-)
Если у вас запись одна, еще ладно, можно ее разбить в массив по разделителю, но если это несколько строк записей, то без объекта не обойтись.

  Ответить  
 
 автор: kosta_in_net   (11.03.2011 в 08:18)   письмо автору
 
   для: sim5   (08.03.2011 в 11:08)
 

у меня получился многомерный массив. Хотел сделать одномерным, разбивая элементы регулярным выражением. Результат можно увидеть тут http://sex-toys.su/ "Недавно просмотренные Вами товары" (появляются после просмотра нескольких товаров). Код ничинается с
<script type='text/javascript'>divs=
Понимаю, что сексшоп может восприниматься неоднозначно. Но для меня это просто магазин, еще один сайт, который нужно было сделать.

  Ответить  
 
 автор: AlexSol   (04.03.2011 в 09:12)   письмо автору
 
   для: kosta_in_net   (04.03.2011 в 07:28)
 

var compact_text='42=1836.jpg=Samsung S5230 Star Black=S5230';
var arr = compact_text.split('=');
var string="<div><p><a href='/shop/detail.php?item="+arr[0]+"' onClick='detail(this.href); return false;'><img src='/small/img/shop/"+arr[1]+"' alt='"+arr[2]+"'></a></p>"+arr[3]+"</div>";

  Ответить  
 
 автор: Красная_шляпа   (07.03.2011 в 15:54)   письмо автору
 
   для: AlexSol   (04.03.2011 в 09:12)
 

советую использовать json

  Ответить  
 
 автор: kosta_in_net   (08.03.2011 в 08:10)   письмо автору
 
   для: AlexSol   (04.03.2011 в 09:12)
 

сплит то же не совсем то. Ну да ладно, слелал готовым массивом, как предлагал сим5

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования