Помогите пожалуйста разобраться как сделать скрипт.
У меня есть скрипт, который генерит из текста такую байду:
<home><c=1>Строка1c= и x= - номер строки.
<x=1><y=0><end><home><c=2>Строка2
<x=2><y=0><end><home><c=3>Строка3
<x=3><y=0><end><home><c=4>Строка4
<x=4><y=0><end><home><c=5>Строка5
<x=5><y=0><end><home><c=6>Строка6
<x=6><y=0><end><home><c=7>Строка7
<x=7><y=0><end><home><c=8>Строка8<x=8><y=0><end>
Как сделать, чтобы обработать y=... при соответствующем значении x=... ?
Например, x=4, а y=y+1.
Можно ли обойтись для этой цели только лишь c=..., что в начале строки, а x=... убрать?
Спустя 28 минут, 31 секунда (14.01.2010 - 14:10) Gradus написал(а):
"ЧОО !?" (С)
Спустя 1 час, 32 минуты (14.01.2010 - 15:42) vagrand написал(а):
О каком языке программирования идет речь?
Спустя 3 часа, 8 минут, 26 секунд (14.01.2010 - 18:50) tiger написал(а):
PHP, конечно же.
А странные "теги" - это для удобства последующего их вырезания, strip_tags.
Весь этот текст представляет собой одну переменную:
А странные "теги" - это для удобства последующего их вырезания, strip_tags.
Весь этот текст представляет собой одну переменную:
$text = "<home><c=1>Строка1Как здесь сделать, что если x=4, то "y" получается y=y+1 ? При аналогичном обращение повторяется то же самое.
<x=1><y=0><end><home><c=2>Строка2
<x=2><y=0><end><home><c=3>Строка3
<x=3><y=0><end><home><c=4>Строка4
<x=4><y=0><end><home><c=5>Строка5
<x=5><y=0><end><home><c=6>Строка6
<x=6><y=0><end><home><c=7>Строка7
<x=7><y=0><end><home><c=8>Строка8<x=8><y=0><end>";
Спустя 54 минуты, 27 секунд (14.01.2010 - 19:45) 6a6ka написал(а):
Цитата |
У меня есть скрипт, который генерит из текста такую байду |
Ну так в студию.
Спустя 13 минут, 13 секунд (14.01.2010 - 19:58) tiger написал(а):
Зачем?
Спустя 3 минуты, 1 секунда (14.01.2010 - 20:01) ZSH написал(а):
ни фига себе!!!
Спустя 17 минут, 12 секунд (14.01.2010 - 20:18) tiger написал(а):
Обработать-то нужно уже готовое:
$text = "<home><c=1>Строка1Как в этой переменной изменить "y" на y+1, если например, x=4 ?
<x=1><y=0><end><home><c=2>Строка2
<x=2><y=0><end><home><c=3>Строка3
<x=3><y=0><end><home><c=4>Строка4
<x=4><y=0><end><home><c=5>Строка5
<x=5><y=0><end><home><c=6>Строка6
<x=6><y=0><end><home><c=7>Строка7
<x=7><y=0><end><home><c=8>Строка8<x=8><y=0><end>";
Спустя 1 час, 13 минут, 36 секунд (14.01.2010 - 21:32) VolCh написал(а):
приведите, хотя бы, что хотите получить (как привели, что у вас есть), если не можете нормально сформулировать
Спустя 9 минут, 30 секунд (14.01.2010 - 21:41) Gradus написал(а):
Цитата |
Как здесь сделать, что если x=4, то "y" получается y=y+1 ? При аналогичном обращение повторяется то же самое. |
"ЧОО !?" (С)
Я всё равно до конца не понимаю что вы хотите

Может strpos и его компания или регулярки подойдут ?
Спустя 1 час, 12 минут, 26 секунд (14.01.2010 - 22:54) vital написал(а):
Цитата (tiger @ 14.01.2010 - 17:18) |
Как в этой переменной изменить "y" на y+1, если например, x=4 ? |
Вам уже все сказали)
Пройдите весь текст по строкам, в каждой строке выделите x=z(strpos(),регулярки - как вам удобно), далее if (z=4){Делаем y=y+1 (str_replace() или eregi_repalce() - орять же, как вам удобно..)}
Ну а если вам нужен готовый код, то php для знатоков - не та ветка.
Спустя 43 минуты, 19 секунд (14.01.2010 - 23:37) tiger написал(а):
Цитата |
Я всё равно до конца не понимаю что вы хотите |
Было:
<home><c=1>Строка1<x=1><y=0><end>А должно получиться:
<home><c=1>Строка1<x=1><y=1><end>При аналогичном обращении:
<home><c=1>Строка1<x=1><y=2><end>и т.д.
Спустя 10 часов, 56 минут, 31 секунда (15.01.2010 - 10:33) Gradus написал(а):
tiger, эм...
Однозначно вам помогут выше сказаные советы
Однозначно вам помогут выше сказаные советы

Спустя 1 минута, 38 секунд (15.01.2010 - 10:35) tiger написал(а):
<?Здесь при обработке в тексте y=0 заменяет на y=*0*.
$str = "<home><c=1>Строка1
<x=1><y=0><end><home><c=2>Строка2
<x=2><y=0><end><home><c=3>Строка3
<x=3><y=0><end><home><c=4>Строка4
<x=4><y=0><end><home><c=5>Строка5
<x=5><y=0><end><home><c=6>Строка6
<x=6><y=0><end><home><c=7>Строка7
<x=7><y=0><end><home><c=8>Строка8<x=8><y=0><end>";
echo preg_replace('/<x=1><y=([0-9]+)/', '<x=1><y=*\1*', $str);
?>
Как тут сделать, чтобы y=... заменялся на y=...+1 ?
Спустя 1 час, 11 минут, 20 секунд (15.01.2010 - 11:46) Gradus написал(а):
Ну сначало узнайте значение , а потом уже заменяйте.
Спустя 2 минуты, 18 секунд (15.01.2010 - 11:49) tiger написал(а):
Вот я о том и спрашиваю.
Спустя 1 минута, 30 секунд (15.01.2010 - 11:50) Gradus написал(а):
По той же схеме.
далее str_replace()
preg_match('/<x=1><y=([0-9]+)/', $str, $res);
далее str_replace()
Спустя 1 час, 27 минут, 31 секунда (15.01.2010 - 13:18) tiger написал(а):
Спасибо!
Разобрался, всё действует.
Возможно ли отсортировать эти данные:
Каждая новая строка - от <home> до <end>.
Разобрался, всё действует.
Возможно ли отсортировать эти данные:
<home><c=1>Строка1по значению "y" ?
<x=1><y=1><end><home><c=2>Строка2
<x=2><y=3><end><home><c=3>Строка3
<x=3><y=60><end><home><c=4>Строка4
<x=4><y=71><end><home><c=5>Строка5
<x=5><y=6><end><home><c=6>Строка6
<x=6><y=8><end><home><c=7>Строка7
<x=7><y=9><end><home><c=8>Строка8<x=8><y=0><end>
Каждая новая строка - от <home> до <end>.
Спустя 12 минут, 51 секунда (15.01.2010 - 13:31) Gradus написал(а):
опять же preg_match_all достаёш все это дело , результат сохранить в массиве где инедксом будет служить значение y. дальше тем же методом пузырька отсортировать
Спустя 31 минута, 49 секунд (15.01.2010 - 14:02) tiger написал(а):
Не совсем понял, что доставать?
Спустя 13 минут, 52 секунды (15.01.2010 - 14:16) Gradus написал(а):
создай массив где будет содержаться текст от <home> до <end> с помощью preg_match_all вот и достанеш текст дальше уже будеш с ним работать как я выше написал
Спустя 54 минуты, 15 секунд (15.01.2010 - 15:10) tiger написал(а):
preg_match_all("#\<home>(.+?)\<end>#s",$str,$d2);а дальше как?
Спустя 52 минуты, 48 секунд (15.01.2010 - 16:03) Gradus написал(а):
preg_replace_all('/<home><x=([0-9]+)><y=([0-9]+)<end>/us', $str,$d2); что-то типо того
Будет массив , дальше пересохраните массив так что бы индеком служило значение y
Будет массив , дальше пересохраните массив так что бы индеком служило значение y
Спустя 3 дня, 2 часа, 57 минут, 47 секунд (18.01.2010 - 19:01) tiger написал(а):
Как индекс этот обозначить?