| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Разбивка строки |
| Автор: kr3v3tkus 28.10.2008, 17:58 | ||
| Строка $content содержит курсы валют, каждый элемент разделён табуляцией, как оттуда вытащить элементы при каждой 3ей табуляции? Чтобы был вывод например так USD 2008-12-12 25.24 чтобы потом вгрузить в $ticker $date $price или подскажите как это легче сделать? мб функция есть замены какаято?
|
| Автор: HackMan 28.10.2008, 18:06 |
| может http://ua2.php.net/explode? |
| Автор: kr3v3tkus 28.10.2008, 18:16 | ||
дык эксплод кушает всю строку, а как в этой строке именно по третьему табу разбить? т.е. при выводе у меня получается AUD 2008-10-28 16.6183 AUD 2008-10-28 16.6183 AUD 2008-10-28 16.6183 AUD 2008-10-28 16.6183 тк он только первые 3 параметра от строки берёт |
| Автор: bars80080 28.10.2008, 18:22 | ||
попробуй так
|
| Автор: kr3v3tkus 28.10.2008, 18:34 | ||||
| bars80080, а это один раз перед циклом сделать? Я уж куда ни пихаю - никак неполучается( мб меня не понял никто - я оч плохо обясняю
и из неё сделать
|
| Автор: bars80080 28.10.2008, 18:39 |
| нет, заместо твоей строки $buffer = explode(" ", $content[i], 4096); тыж драконишь строчку массива после неё поставь скажем var_dump($buffer); посмотри что получится, ну и сюда скинь, если что не так |
| Автор: HackMan 28.10.2008, 18:50 |
| попробуй регулярные выражения, с паттерном вроде этого: ([^\s]+[\s]){3} |
| Автор: smartov 28.10.2008, 19:15 | ||
kr3v3tkus,
|
| Автор: kr3v3tkus 28.10.2008, 19:15 | ||
bars80080,
только первую букву глотает :( HackMan, для меня сложно :( я так и не выучил все эти флаги в выражениях :( |
| Автор: kr3v3tkus 28.10.2008, 19:19 | ||
| smartov, вот опять же - я немогу даже с этим разобраца :( подставил - вывело
и усё :( |
| Автор: smartov 28.10.2008, 19:21 | ||
| kr3v3tkus, значит строка была разбита не табуляторами Добавлено через 3 минуты и 33 секунды Давайте так. Вот вам наверняка рабочий пример. Строка разбита пробелами. Думаю дальше сами сможете.
У вас, я думаю, строка разбита четярьмя пробелами а не табулятором. Если это так, то заменить в регулярке единички на 4 особого туда не составит |
| Автор: kr3v3tkus 28.10.2008, 19:25 |
| ну вот не знаю как они так разбили... я просто отступ ихний копировал и у меня шло :( http://export.rbc.ru/free/cb.0/free.fcgi?period=DAILY&tickers=NULL&d1=28&m1=10&y1=2008&d2=28&m2=10&y2=2008&lastdays=0&separator=TAB&data_format=BROWSER |
| Автор: smartov 28.10.2008, 19:38 | ||
| kr3v3tkus, тогда должно работать вот это
Добавлено через 2 минуты и 23 секунды Хотя лично я и предпочситаю писать регулярки чётко под ожидаемую строку. Но зато эта должна работать почти на любых разделителях. Добавлено через 2 минуты и 38 секунд Имеется в виду на любых пробелах или табуляторах или и том и том |
| Автор: kr3v3tkus 28.10.2008, 19:57 | ||
smartov, крута
чтобы все эти три разных элемента строки в 3 разных массива поместить? Как можно с помощью explode выдрать из этого preg_match_all? |
| Автор: smartov 28.10.2008, 20:12 |
| Не. Дальше я пас это сильно просто. С такими вопросами в Центр помощи, а лучше на читать доку на php.net |
| Автор: kr3v3tkus 28.10.2008, 20:14 |
| smartov, ок сенк большое всем пасибо |