[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Найти и обновить
tiger
Здравствуйте!

Помогите пожалуйста разобраться как сделать скрипт.

У меня есть скрипт, который генерит из текста такую байду:
<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>
c= и x= - номер строки.
Как сделать, чтобы обработать 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.

Весь этот текст представляет собой одну переменную:
$text = "<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>";
Как здесь сделать, что если x=4, то "y" получается y=y+1 ? При аналогичном обращение повторяется то же самое.

Спустя 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
<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" на y+1, если например, x=4 ?

Спустя 1 час, 13 минут, 36 секунд (14.01.2010 - 21:32) VolCh написал(а):
приведите, хотя бы, что хотите получить (как привели, что у вас есть), если не можете нормально сформулировать

Спустя 9 минут, 30 секунд (14.01.2010 - 21:41) Gradus написал(а):
Цитата
Как здесь сделать, что если x=4, то "y" получается y=y+1 ? При аналогичном обращение повторяется то же самое.

"ЧОО !?" (С)
Я всё равно до конца не понимаю что вы хотите smile.gif
Может 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, эм...
Однозначно вам помогут выше сказаные советы smile.gif

Спустя 1 минута, 38 секунд (15.01.2010 - 10:35) tiger написал(а):
<?
$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=0 заменяет на y=*0*.
Как тут сделать, чтобы 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 написал(а):
По той же схеме.
preg_match('/<x=1><y=([0-9]+)/', $str, $res);

далее str_replace()

Спустя 1 час, 27 минут, 31 секунда (15.01.2010 - 13:18) tiger написал(а):
Спасибо!
Разобрался, всё действует.

Возможно ли отсортировать эти данные:
<home><c=1>Строка1
<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>
по значению "y" ?
Каждая новая строка - от <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

Спустя 3 дня, 2 часа, 57 минут, 47 секунд (18.01.2010 - 19:01) tiger написал(а):
Как индекс этот обозначить?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.