За последние 24 часа нас посетили 18806 программистов и 1607 роботов. Сейчас ищут 975 программистов ...

Прошу помочь с арифметикой в PHP

Тема в разделе "PHP для новичков", создана пользователем Gsmnet, 10 янв 2018.

  1. Gsmnet

    Gsmnet Новичок

    С нами с:
    20 дек 2017
    Сообщения:
    24
    Симпатии:
    2
    Доброго времени суток.
    Есть динамический файл со строками в каждой из которых географические координаты.
    Выглядит примерно так:
    lat="38° 07` 55" lon="078° 11` 19"
    lat="53° 28` 30" lon="002° 05` 19"
    lat="52° 36` 27" lon="002° 09` 13

    Очень нужно конвертировать данные координаты в другой формат по формуле:
    "38° 07` 55 = ", 38 + (7 / 60) + (55 / 3600), "
    То-есть строку
    lat="38° 07` 55" lon="078° 11` 19" нужно преобразовать в
    lat="38.131944444444" lon="78.188611111111"

    Прошу помочь. Даже не знаю куда копать.
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Регулярка по трём группам чисел и потом делаешь умножение совпадений.
     
    Gsmnet нравится это.
  3. Gsmnet

    Gsmnet Новичок

    С нами с:
    20 дек 2017
    Сообщения:
    24
    Симпатии:
    2
    Не понимаю :)
    Пробовал вот такую замену, но она выводит само уравнение, а не его решение
    $content = preg_replace('|(\d+)° (\d+)` (\d+)|', '$1 + ($2 / 60) + ($3 / 3600)', $content);
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Ну так ты написал "заменить строку по такому-то шаблону на такой-то шаблон". Вот он тебе и меняет строку на строку. А тебе надо выцепить эти совпадения и использовать потом отдельной командой в математике. Ну или если уж хочется реплейс делать, то через колбек функцию.
     
    Gsmnet нравится это.
  5. Gsmnet

    Gsmnet Новичок

    С нами с:
    20 дек 2017
    Сообщения:
    24
    Симпатии:
    2
    Я потому и пишу в раздел для новичков, что ничего не понимаю из сказанного Вами. Спасибо за попытку помочь.
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    https://secure.php.net/manual/ru/function.preg-replace-callback.php

    Вот это плохо. Новичок - это тот, кто хотя бы одну книжку по php прочитал, прежде чем начинать программировать.
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    preg_match и потом $content = $m[1] + ($m[2]/60) + ($m[3]/60)
    либо
    preg_replace_callback и return $m[1] + ($m[2]/60) + ($m[3]/60)

    новичок новичком, но если регулярки взял, значит уже остальные моменты типа знаешь.
     
    Gsmnet нравится это.
  8. Gsmnet

    Gsmnet Новичок

    С нами с:
    20 дек 2017
    Сообщения:
    24
    Симпатии:
    2
    я эту строку с регуляркой по примерам в интернете почти сутки пытался составить чтоб заработала. На самом деле практически не разбираюсь в PHP. Инклуды умею хорошо делать ))). Спасибо. Буду пытаться сделать то что Вы написали. Хотя не до конца понял как это написать.
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
  10. Gsmnet

    Gsmnet Новичок

    С нами с:
    20 дек 2017
    Сообщения:
    24
    Симпатии:
    2
    Ничего не выходит
    Вот так пробовал

    $str = "(\d+)° (\d+)` (\d+)";
    {
    return $m[1] + ($m[2]/60) + ($m[3]/3600);
    }
    echo preg_replace_callback("/(\d+)/",$str);
     
  11. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Ткнул пальцем в небо и не получил результата. Странно, да? Мануал открой для начала.
     
  12. Gsmnet

    Gsmnet Новичок

    С нами с:
    20 дек 2017
    Сообщения:
    24
    Симпатии:
    2
    Вы считаете что каждый кто обратился за помощью в раздел новичков должен сразу идти зубрить книгу? Спасибо за советы. Но прям сейчас все бросать ради одной функции и начинать изучать то, что люди изучают годами у меня нет возможности. Просишь помощи, а тебя посылают в гугл или в библиотеку. Раздел для новичков можно было и не открывать, а просто написать список книг рекомендуемых к изучению. Удаляюсь. Можете не отвечать.
     
  13. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Истеричку выключи. Она по жизни только девочкам помогает, и то не всегда. Открой мануал по функции, которую используешь, и сравни своё творение с тем что там написано. И да, если ты взялся за регулярки то такая простая и базовая фигня как синтаксис языка в частности и алгоритмизация программирования в целом - для тебя уже не пустой звук.
     
  14. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Он должен это сделать до того, как написать первую строчку на php в реальном проекте. Для тех, кто не хочет читать инфу, есть разделы "Сделайте за меня" и "Фриланс".
     
    MouseZver нравится это.