Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
Silver

Разбор XML-файла курсов валют по патэрну

09.01.2012, 12:36. Показов 4906. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Производится разбор XML-файла курсов валют по патэрну.
Не могу понять почему так получается:
Code
1
2
3
4
5
6
cur[0]= 392 JPY 100 Японских иен 24,6246
substr(cur[0],0,19)= <Valute ID="R01820
cur[1]= R01820
cur[2]= 392
cur[3]= Японских иен
cur[4]= 24,6246
cur[] - это массив, где cur[0] якобы вся строка,
а cur[1], cur[2],... cur[x] - разобраные значения из строки.
На РНР только начинаю писать и поэтому по опыту С++ все кажется
полнейшим бредом!
Вопрос - почему
Code
1
2
3
4
5
6
Вся строка:
cur[0]= [bold]392 JPY 100 Японских иен 24,6246[/bold] 
 
а её часть:
substr(cur[0],0,19)= [bold]<Valute ID="R01820[/bold] 
?????????
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2012, 12:36
Ответы с готовыми решениями:

Сервис экспорта курсов электронных валют
Привет ребята Подскажите пожалуйста, есть ли сервис который предоставляет экспорт курсов электронных валют? Спасибо

Как сделать информер курсов валют
Слышал, что на сайте ЦБ РФ есть инструкция о том, как можно использовать данные о курсе валют для размещения на своем сайте. Перерыл весь...

Парсер xml курсов валют ЦБ РФ
здравствуйте, мучаюсь не первый день, помогите разобраться с парсером xml ссылка на xml &lt;?xml version=&quot;1.0&quot;...

28
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
09.01.2012, 14:09
А как ты проверил что cur[0] содержит именно "392 JPY 100 Японских иен 24,6246"? Вызвал print cur[0] и смотрел что в окне браузера вывелось? Есди да, то это неправильно. Надо или смотреть исходный текст html или выводить строку как print htmlspecialchars(cur[0]).
0
Silver
09.01.2012, 14:52
Я сделал так:
Code
1
2
echo "cur[0]= ".$cur[0]."
";
Значит для вывода строк это не подходит?
Некоторые символы в строке попадают в интерпретацию браузером и не отображаются?
Тогда пользуясь случаем подскажи пожалуйста патэрн для даты в виде 31.10.2005?
Или достаточно-ли использовать "#ValCurs Date="([^"]+([^>])#i" для
поиска в строке "<ValCurs Date="31.10.2005" name=.....>"? По-моему нет.
Там наверно нужно указать ограничитель не >, а пробел, но пока не знаю как.
Silver
09.01.2012, 15:04
Я сделал так:
Code
1
2
3
4
5
  $patdate = "#<ValCurs Date="([^"]+)[^40]#i";
  preg_match($patdate,$content,$data);
  $data[1] = str_replace("/",".",$data[1]);
  echo "data= ".$data[1]."
";
Но наверно есть лучшее решение?
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
09.01.2012, 15:07
Цитата Сообщение от Silver
Я сделал так:
Code
1
2
echo "cur[0]= ".$cur[0]."
";
Значит для вывода строк это не подходит?
Некоторые символы в строке попадают в интерпретацию браузером и не отображаются?
Этот метод не подходит для строк которые могут содержать символы < и >. Ты работаешь c XML, там эти символы на каждом шагу. Пиши echo "cur[0]= ".htmlspecialchars($cur[0])."
";

Цитата Сообщение от Silver
Тогда пользуясь случаем подскажи пожалуйста патэрн для даты в виде 31.10.2005?
Или достаточно-ли использовать "#ValCurs Date="([^"]+([^>])#i" для
поиска в строке "<ValCurs Date="31.10.2005" name=.....>"? По-моему нет.
Там наверно нужно указать ограничитель не >, а пробел, но пока не знаю как.
Я бы использовал ValCurs Date="(d{2}.d{2}.d{4}"
Однако стоит подумать об использовании обычных строковых функций вместо регулярных выражений. Это может оказаться более эффективным решением. Умные люди об этом уже давно пишут
http://spectator.ru/technology/php/simple_XML
0
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
09.01.2012, 15:08
Цитата Сообщение от Silver
Но наверно есть лучшее решение?
Не могу давать никаких советов т.к. не знаю что именно тебе нужно в итоге получить.
0
Silver
09.01.2012, 15:26
Я сегодня первый день сел разбираться с РНР, поэтому сорри за глупые вопросы.
Значит исходя из вышесказанного лучше использовать поиск позиций "начала" и "конца" текста даты и substr() её выдергивать из текста?
Я так и собирался, но substr() повел себя странно (как мне показалось)
что и повернуло меня на путь регулярных выражений.
Silver
09.01.2012, 15:32
И почему
$patdate = "#<ValCurs Date="([^"]+)[^*40]#i";
preg_match($patdate,$content,$data);
возвращает дату в виде 01/11/2005 хотя в тексте она в виде 01.11.2005?:
<?xml version="1.0" encoding="windows-1251" ?>
- <ValCurs Date="01.11.2005" name="Foreign Currency Market
- <Valute ID="R01010
<NumCode>036</NumCode>
<CharCode>AUD</CharCode>
<Nominal>1</Nominal>
<Name>Австралийский доллар</Name>
<Value>21,4029</Value>
</Valute>
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
09.01.2012, 15:36
Цитата Сообщение от Silver
Значит исходя из вышесказанного лучше использовать поиск позиций "начала" и "конца" текста даты и substr() её выдергивать из текста?
По моему да.

Цитата Сообщение от Silver
Я так и собирался, но substr() повел себя странно (как мне показалось)
что и повернуло меня на путь регулярных выражений.
Она себя "странно" повела только из-за того что браузер "съедал" текст внутри xml тегов.
0
Silver
11.01.2012, 16:18
Вопрос такой.
Я поставил локально MySQL, но при исполнении скрипта (INSERT INTO .....) в коде PHP записи в таблицу добавляются, но вместо русских букв знаки вопроса. Как исправить и где? Пытался изменить кодовую страницу (cp1251) по умолчанию, назначал кодовую страницу на отдельные поля. Ничего не помогает.
Апач2 + PHP5 + MySQL 4.1.15
В Интернет-браузер русский текст выводится правильно. При исполнении запроса непосредственно в MySQL тоже все хорошо. А при добавлении записи через mysql_query() вот такая беда.
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
13.01.2012, 04:00
Значения переменных MySQL

charset_set_client
charset_set_connection
charset_set_database
charset_set_results
charset_set_server

в студию
0
Silver
15.01.2012, 10:52
Где их посмотреть?
В my.ini их нет.
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
15.01.2012, 10:59
Запрос выполни
SHOW VARIABLES
0
Silver
15.01.2012, 12:02
''character_set_client'', ''utf8''
''character_set_connection'', ''utf8''
''character_set_database'', ''latin1''
''character_set_results'', ''utf8''
''character_set_server'', ''utf8''
''character_set_system'', ''utf8''
Ну я тут уже экспериментировал.
ЧТо нужно прописать? cp1251?
И где это нужно прописать?
Silver
15.01.2012, 12:04
Наверно что-то типа:
SET VARIABLES character_set_client = cp1251
?
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
15.01.2012, 12:13
Да, попробуй подправить все UTF на CP1251
SET character_set_client=''cp1251''
итп
0
Silver
15.01.2012, 12:31
set character_set_database=''cp1251''
Не дает результата! После выполнения запроса (из браузера)
значение не менятся. Буду пробовать из командной строки
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
15.01.2012, 12:34
Можешь попробовать еще
SET GLOBAL character_set_server=''cp1251''
0
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
15.01.2012, 12:35
Только бэкап баз сделать не забудь предварительно
Мало ли чего.
0
Silver
15.01.2012, 12:39
При попытке зайти с командной строки пишет
"Access denied for user ODBC@localhost"
Я ставил ( и потом снес) ODBC-Cоnnect для MySQL
Видимо осталась какая-то хрень...
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.01.2012, 12:39
Помогаю со студенческими работами здесь

Обновление курсов валют
Доброе утро всем. В 1С Предприятие 8.3 не работает автоматическое обновление справочников валют и банков. Каждый раз приходится заходить...

Импорт курсов валют
Доброго времени суток! Нужна помощь в составлении кода, т.к. сам вообще мало чего понимаю в коде 1С. В общем ситуация такая: 1....

Javascrypt курсов валют
ДОБРОГО ВРЕМЕНИ СУТОК! Я ПО ПОВОДУ javascrypt! Есть рабочий код вывода курсов валют на для meteor, но кривой. Запрос обновления...

Парсер курсов валют
Здравствуйте, не могли бы вы помочь, нужно написать скрипт который будет заходить на сайт ЦБ парсить курсы и выводить их. есть реализация...

Загрузка курсов валют!
Если это комуто интересно то пишите на мыло или стучите в асю договоримся!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru