Помогите пожалуйста решить следующую задачу: создание треков для Gmap (Google API) есть файл (plt, т.е текстовый) - т.н. "польский формат для точек Код (Text): OziExplorer Track Point File Version 2.1 WGS 84 Altitude is in Feet Reserved 3 0,2,255,ACTIVE LOG ,0,0,2,8421376 11 55.929530, 37.858260,1, 456,39256.1282639, 23-июн-07, 3:04:42 55.929640, 37.858500,0, 456,39256.1284028, 23-июн-07, 3:04:54 55.929620, 37.858630,0, 456,39256.1284491, 23-июн-07, 3:04:58 55.929080, 37.858870,0, 456,39256.1287269, 23-июн-07, 3:05:22 55.927260, 37.858140,1, 456,39256.1292477, 23-июн-07, 3:06:07 55.926380, 37.857920,0, 456,39256.1295023, 23-июн-07, 3:06:29 55.926290, 37.858310,0, 456,39256.1295833, 23-июн-07, 3:06:36 55.926350, 37.858590,0, 470,39256.1297801, 23-июн-07, 3:06:53 55.926780, 37.857770,1, 470,39256.1303819, 23-июн-07, 3:07:45 55.926420, 37.858970,0, 546,39256.1312731, 23-июн-07, 3:09:02 55.926440, 37.859140,0, 548,39256.1316319, 23-июн-07, 3:09:33 в нём первые шесть строк - метаданные, причем шестая - создана автоматически, и означает следующее количество точек. далее идут строки с координатами. его надо загрузить на сервер в исходном виде, чтобы он был в таком виде доступен для скачивания. После этого его надо обработать в XML для его отображения на сайте и сохранить в таком виде в БД посредством PHP. ( как сохранить я знаю) Код (Text): <?xml version="1.0" encoding="Windows-1251" ?> <routes> <route> <p lat="55.96306236" lon="38.02902460" markerIcon="images/greenCircle.png" /> <p lat="55.96271405" lon="38.02908897" /> <p lat="55.96356679" lon="38.03314447" /> <p lat="55.96401117" lon="38.03290844" /> ..... <p lat="55.96447956" lon="38.03432465" /> <p lat="55.96613691" lon="38.03719997" /> <p lat="55.84289192" lon="38.19877625" markerIcon="images/redCircle.png" /> </route> </routes> Так вот основная проблема в том что я не могу сообразить как из текстового файла создать массив для того чтобы из него сформировать XML
Да и ещё вопрос от начинающего, точнее просьба: помогите разложить последний код из предыдущего сообщения в массив где p[n] ($lat, $lon, $markerIcon) , т.е надо получить значения аттрибутов из каждой строки Р и положить их в массив, могу вытащить эти аттрибуты для строк через JS, а нужно в PHP. Понимаю, как разложить строку, но никак не дойду до того, как из строки вытащить атрибуты, т.е. значения
ну, считывай файл в массив, отбрасывай первые 6 элементов, дальше разбивай строку по пробелам на массив
Типа того: PHP: <?php $lines=file('ПУТЬ_К_ТВОЕМУ_ФАЙЛУ.РАСШИРЕНИЕ'); foreach ($lines as $key=>$value) { if ($key<=5) continue; // тут формируй свой XML }?>
Спасибо, попробую. Кстати вот разложил сам на массив (второй вопрос), если не сложно посмотрите, нет ли критич. ошибок. В принципе Регулярные первый раз увидел, но данный скрипт в общем то работает, спасибо этому форуму (код формирует массив из текстового файла $str вытаскивая последовательно значения широты и долготы lat и lon и выводит его в XML) PHP: echo '<gpx ...>'; echo '<trk>'; echo '<name>'. rus2lat($name) .'</name>'; echo '<trkseg>'; $str = '#lat="(.*)"\s+lon="(.*)"#Us'; preg_match_all($str,$contents,$matches); $lenght = count($matches[1]); for ($i = 0; $i < $lenght; $i++) { $lat = $matches[1][$i]; $lon = $matches[2][$i]; echo '<trkpt lat="'. $lat .'" lon="'. $lon . '">'; echo '</trkpt>'; } echo '</trkseg>'; echo '</trk>'; echo '</gpx>';
Сделал всё как описано. Получаю из текста XML строку, в ней заменяю знаки на < > и т.п. для того чтобы хранить эту строку в БД. Всё ОК, если строка короткая, а если эта строка содержит большое кол-во значений (это точки маршрутов и их может бытьнесколько сотен) , то при размещении как TEXT в БД эти значения "бьются". т.е. данные сохраняю в MySQL в виде: Код (Text): ..... <p lat="55.64076776" lon="38.63232434" ele="525.5804" /><p lat="55.64023132" lon="38.63217413" ele="528.7343" /><p lat="55.63956613" lon="38.63215268" ele="517.6955" /><p lat="55.63879366" lon="38.63215268" ele="517.6955" /><p lat="55.63851471" lon="38.63213122" ele="516.1183" /><p lat="55.63851471" lon="38.63215268" ele="516.1183" /> ..... Но в БД постоянно теряется какая нибудь "буква", например вместо > пишется &t; и соответственно при выводе этих данных из таблицы не получается нормально сформировать XML. Подскажите, что я не так делаю? думал не хватает поля и изменял TEXT до LONGTEXT но это ничего не меняет.
PS Строку формирую из загруженного файла (см. сообщения выше) так: PHP: $file_url = $GPS_file_dir.$GPS_file_name; if ( ereg("plt$", $GPS_file_name)) { $lines = file ($file_url); $count_lines = count($lines); $str = ' <route>'; for ($i=6; $i <= $count_lines-1; $i++) { list($lat, $lon,, $ele,,,) = split(',', $lines[$i]); $str .= '<p lat="'.trim($lat).'" lon="'. trim($lon).'" '; $str .= 'ele="'. trim($ele).'" '; $str .= ' />' ; } $str .= ' </route>';