За последние 24 часа нас посетили 17259 программистов и 1229 роботов. Сейчас ищут 1307 программистов ...

не "Содержит", а "Начинается с"

Тема в разделе "Регулярные выражения", создана пользователем Viktor1, 14 янв 2008.

  1. Viktor1

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

    С нами с:
    14 янв 2008
    Сообщения:
    7
    Симпатии:
    0
    есть вот так:
    PHP:
    1. if (eregi("ABC",$msg)) {echo"В тексте есть ABC";}
    а надо сделать чтобы можно было сказать , что "Текст начинается с букв ABC"

    Помогите пожалуйста
     
  2. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
  3. Viktor1

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

    С нами с:
    14 янв 2008
    Сообщения:
    7
    Симпатии:
    0
    конечно понятно, но я думал что это форум для новичков. не думаю что они смогут разобраться с рег. выражениями так быстро.
     
  4. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
  5. Viktor1

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

    С нами с:
    14 янв 2008
    Сообщения:
    7
    Симпатии:
    0
    все нашел я сам. надо просто ^ABC и без всяких диезов...
     
  6. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Viktor1
    # - это символ-ограничитель, который указывает на то, что между ним есть регулярное выражение.
     
  7. Viktor1

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

    С нами с:
    14 янв 2008
    Сообщения:
    7
    Симпатии:
    0
    Я посмотрел в интернете и нигде не нашел с диезами, видел только со слешами /
    значит нужно так?:
    PHP:
    1. if (eregi("#^ABC#",$msg)) {echo"Начинается с ABC";}
    а если я сделал без диезов то это может не всегда сработать или что?
     
  8. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    ##, //, {} и т.д. - без разницы.
     
  9. eduha

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

    С нами с:
    8 ноя 2006
    Сообщения:
    278
    Симпатии:
    0
    Адрес:
    Караганда
    Ограничители нужны в preg_*
    В ereg - не нужны.
     
  10. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    это был тонкий намек, чтобы использовать preg :)
     
  11. Vizit0r

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

    С нами с:
    12 янв 2008
    Сообщения:
    4
    Симпатии:
    0
    прицеплюсь хвостом к этой теме, дабы не плодить новые

    есть строка вида
    Вот из этой строки требуется вырвать название города (оно любое может быть) + название информ-агенства.

    мануалы пытался читать, но видимо мозги не те, все на что меня хватило - это на

    Код (Text):
    1. '/, ИА «Круг-информ»/.$'
    В ответ неизменно получаю тишину.

    подскажите плиз правильную регулярку...
     
  12. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    Vizit0r
    PHP:
    1. <?
    2. // шаблон города (любые символы кроме зяпятой)
    3. $city = '[^,]+';
    4. // шаблон информ-агенства (любые символы кроме закрывающей кавычки-ёлочки)
    5. $ia = '[^»]+';
    6.  
    7. // собираем регулярку
    8. // 1. нужные подстроки берем в скобки
    9. $re = "($city), ИА «($ia)»";
    10. // 2. добавляем метасимвол начала данных (^)
    11. $re = "^$re";
    12. // 3. по краям ставим ограничитель регулярки (#)
    13. $re = "#$re#";
    14.  
    15. // пробуем
    16. $str = 'Одесса, ИА «Круг-информ». В муниципальном бюджете города...';
    17. $found = preg_match($re, $str, $subpatterns);
    18. if ($found) {
    19.     list(, $city, $ia) = $subpatterns;
    20.     echo "Город: $city, ИА: $ia";
    21. }
    22. else {
    23.     echo 'Не найдено';
    24. }
     
  13. Vizit0r

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

    С нами с:
    12 янв 2008
    Сообщения:
    4
    Симпатии:
    0
    Ti
    спасибо огромное!

    ищет отлично, но задача чуть другая:

    Имеется ввиду что вместо этогонайденного фрагмента должен быть пробел или просто ''
    Итого из строки
    'Одесса, ИА «Круг-информ». В муниципальном бюджете города...'
    должно получиться
    'В муниципальном бюджете города...'
    при этом не должно захватываться сообщения в середине текста вида "как сообщили ИА «Круг-информ» в пресс-центре...", потому привязываюсь к запятой перед ИА «Круг-информ» и точке после.
    пробовал preg_replace($re, 'x', $str);
    в ответ тишина - никаких замен.
     
  14. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    Vizit0r
    Я Вам ответил что бы научить строить регулярные выражения.
    Если Вам моего ответа мала, снова читайте мануал "до полного просветления"
     
  15. Vizit0r

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

    С нами с:
    12 янв 2008
    Сообщения:
    4
    Симпатии:
    0
    Ti, я бы с удовольствием прочитал и попытался бы разобраться, но в условиях, когда начальство говорит "до конца недели РСС должно экспортироваться", а помимо него еще тонна всего остального - я банально не имею на это времени.
    что ж, и на том спасибо