Как при помощи регулярных выражений произвести замену

duba

Новичок
Как при помощи регулярных выражений произвести замену

Проблема следующая: У нас имееться строка: PHP - это язык {программирования | программирования баз данных | другое}. Самое класное в нём то что он {простой | сложный | удобный} и.т.д.

Теперь нам надо получить следующий результат (как вы понимаете количество элемментов недолжно быть ограниченно в обоих случаях):

PHP - это язык
<select name=s1>
<option value=1>программирования
<option value=2>программирования баз данных
<option value=3>другое
</select>.

Самое класное в нём то что он
<select name=s2>
<option value=1>простой
<option value=2>сложный
<option value=3>удобный</select>
и.т.д.


Бился с этим очень долго и немог получить нужного мне результата возможно от неопотности в регулярных выражениях.

Напишите пожалуйста ваши идеи по данному вопросу!
 

clever

Guest
lex используйте, товарищ. хватит на всякой ерунде писать.
 

гоша

Guest
регулярные выражения тут не нужны

PHP:
$s="title { opt1 | opt2 | opt3 }";

print strtok($s,"{}|");
print "<select>";

for($n=1;$t=strtok("{}|");$n++)
	print "<option value=$n>$t";

print "</select>";
[m]strtok[/m]
 

duba

Новичок
гоша большой тебе СЭНКС ! Просто дико помог в момент застревания ! :)

-~{}~ 27.04.04 20:25:

Развив мысль получилось следующее ! Возможно как мне кажеться есть путь и попроще, но вроде и так неплохо:

PHP:
$s="title { opt1 | opt2 | opt3 } title { fdf | dfdf | ff} 
sdf sdf sdf { dsdf | sd d| sds d } dsf dsf {dsd|dsd|sds} {sd|d|d}"; 

$g = strtok($s,"{}"); 
print "$g"; 

for($n=1;$t=strtok("{}");$n++) {
  if ($n%2) { 
    echo " <select name=s$n>"; 
    $tmp = explode("|",$t);
  for($i=0,$j=1;$i<=sizeof($tmp);$i++,$j++) echo "<option value=$j> $tmp[$i] ";
  }
  else print "</select> $t ";
}
-~{}~ 27.04.04 20:28:

Хотя с регулярными вырожениями тут нет ничего общего :(
 
Сверху