За последние 24 часа нас посетили 52953 программиста и 1768 роботов. Сейчас ищут 844 программиста ...

Функция разбора Ip, номера телефона или номера кошелька

Тема в разделе "PHP для новичков", создана пользователем bkm, 2 дек 2009.

  1. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    Алгоритм.
    Получаю IP адрес
    Нахожу точки, точки являются разделителем между будущими числами
    Если число одно, добавляю перед ним два нуля
    Если числа два, добавляю перед ним один нуль
    пример 192.168.1.1 будет как 192 168 001 001
    Первые два числа складываю 192+168
    Вторые два числа складываю 001+001
    Полученные числа вычитаю друг из друга, если результат = 0, то Ip счастливый
    В пхп не силен, остановился на замене.

    Код (Text):
    1. $ip2 = str_replace(".", "", $ip);
    2. $content = "<table width='100%' border='0'><tr align='center'>
    3.     <td>".$ip."</td>
    4.     <td>".$ip2."</td>
    5. </tr></table>";
    Есть ли у кого какие мысли по этому поводу?
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Прикольно :)
    explode(".", $ip) - разобьет IP на массив с 4мя элементами
    sprintf("%03d", число) - делает все числа одинаковой длинны (Они преобразовываются в строки)
    Только зачем прибавлять нули, если между числами в группе нет операций?
     
  3. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    Да, действительно зачем =). А я уже хотел писать циклы.
    А полученные строки надо приводить к типу int ? Ну это я сам сделаю.
    Видимо с IP будет даже проще чем с номером кошелька.

    Спасибо за помощь Kreker.
     
  4. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    Вот рабочий код.

    PHP:
    1. $ipishnik = explode(".", $ip);
    2.  
    3. $a = (int) $ipishnik[0];
    4. $b = (int) $ipishnik[1];
    5. $c = (int) $ipishnik[2];
    6. $d = (int) $ipishnik[3];
    7.  
    8.  $delta = ($a + $b) - ($c + $d);
    9.  
    10. $result = ($delta==0) ? "<h1>Поздравляем, Ваш IP СЧАСТЛИВЫЙ</h1>" : "<h1>К сожалению, Ваш IP не счастливый</h1> Не огорчайтесь.";
    Спасибо за участие =)
     
  5. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    PHP:
    1. <?php
    2. list($a,$b,$c,$d) = explode(".", $ip);
    3. $result = ((($a + $b) - ($c + $d))==0) ? "<h1>Поздравляем, Ваш IP СЧАСТЛИВЫЙ</h1>" : "<h1>К сожалению, Ваш IP не счастливый</h1> Не огорчайтесь.";
    гм .. акакие еще варианты оптимизаци и кто может придумать ? :)
    задача сократить ;-)
     
  6. mrbig66

    mrbig66 Активный пользователь

    С нами с:
    24 ноя 2009
    Сообщения:
    17
    Симпатии:
    0
    Адрес:
    msk
    PHP:
    1. <?php
    2. $v = explode(".",$ip);
    3. $result = ($v[0] + $v[1]) == ($v[2] + $v[3]) ? "Ништяк!" : "Пипец!";
    4. ?>