За последние 24 часа нас посетили 66614 программистов и 1632 робота. Сейчас ищут 934 программиста ...

preg_replace

Тема в разделе "PHP для новичков", создана пользователем shalx, 5 ноя 2014.

  1. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Прошу помощи по регуляркам
    Код (Text):
    1. $c = "text1 1234 text2"
    2. echo preg_replace('/[^1-9]{4}/', '', $c);
    хочу вырезать все до цифр ( их должно быть 4 но первая цифра не 0) и оставить все символы после них
     
  2. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    preg_replace('~.*[1-9][0-9]{3}~', '', $text);
     
  3. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Этот код оставил только text2, а хотелось бы оставить 1234 text2
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    там прекрасно справляется строковая функция strstr()
    пробел только оставит перед цифрами, trim() поможет

    Добавлено спустя 1 минуту 38 секунд:
    Код (Text):
    1. $c = "text1 1234 text2";
    2. $c = trim(strstr($c, " "));
    Добавлено спустя 14 минут 10 секунд:
    или такой вариант
    Код (Text):
    1. $c = "text1 1234 text2";
    2. $c = substr($c, strpos($c, " ")+1);
    тут можно обойтись без trim()
     
  5. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Ваш код может урезать первое слово в строке, a что если
    Код (Text):
    1. $c = "22sd ass text1 1234 text2 sddee 67776 ";
    а нам нужен только сие часть - 1234 text2,
    можно подобие этого кода , однако здесь проблема с нулями а нужно урезать только первый ноль и оставить все остальные в четырех 1000 или 1230.
    Код (Text):
    1. while($i < 3) if(intval($Text[$i++]) == 0) return;
    Короче точно нужен паттерн
     
  6. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    в этом случае только паттерн
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    паттерн это сила
     
  8. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Вы разберитесь, что вам надо, сами ж себе противоречите.
     
  9. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Код (PHP):
    1. $c="text1 1234 text2";
    2. echo preg_replace('/^[a-z]?\w+/i','',$c); //1234 text2 
    Не подойдет?
     
  10. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Спасибо rognorog
    Я сделал так
    Код (Text):
    1. $numc = ltrim("$c", "0");
    и
    Код (Text):
    1. if (preg_match("(^[0-9]{4})",$numc){};
     
  11. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Не следует заключать в ковычки переменную $c.
    И вообще я не совсем понял, что вы хотите сделать тогда?
    вам нужно, чтобы всм, первые 4 символа были цифрами, когда " 0 "- не был бы корректен как число, или чтобы не учитывался как число, но вывело бы в заключение отчет от корректного числа? Тут ппц оказывается какие факты могут быть.
    Но хотя если говорите, сделали и работает, может бы и показали, что там в итоге ;)
     
  12. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Хотел сделать ввод типа маски такого типа: 1234, или 1234 текст, или 123456789 текст, или 123456789 , без начальных нулей что и получилось , код я написал выше