За последние 24 часа нас посетили 19907 программистов и 1694 робота. Сейчас ищут 1578 программистов ...

нужна регулярка

Тема в разделе "Регулярные выражения", создана пользователем kostyl, 4 май 2009.

  1. kostyl

    kostyl Guest

    Привет. Нужна регулярка, чтобы отделяла переменную только если она начинается с начала строки и после нее пробелы, табуляция, либо если не сначала то перед ней пробелы, табуляция.... Нужна для preg_replace. Пробывал так, но не выходит:
    PHP:
    1.  
    2. <?php
    3.   preg_replace('/(^|\s*)/(' . $Var . ')\s*/iu', '<b>$0</b>';
    4.  
    Помогите, плиз...
     
  2. kostyl

    kostyl Guest

    спасибо всем, нашел, мне надо было \b
     
  3. kostyl

    kostyl Guest

    а может кому интересно будет помочь. Надо найти все $var которые находятся как отдельные слова между '= class' и ближайшим 'end;'
    пробую так '/=\bclass\b(' . $var . ')\bend;/iu' Но ничего не выходит. Помогите, а, люди добрые.
     
  4. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Попробую пример навалять сейчас.
     
  5. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Получилось вот такое извращение:

    PHP:
    1. <?php
    2.  
    3. $var = 'varname';
    4.  
    5. if(preg_match('/=[[:blank:]]*class[[:blank:]]*('.$var.')[[:blank:]]*end/i', 'This is =  class   '.$var.'   end;', $poc)) {
    6.     echo "We've found \$".$poc[1];
    7. }
    8.  
    9. ?>
     
  6. kostyl

    kostyl Guest

    не работает, потому что между class и $var может быть все что угодно...
     
  7. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Без вопросов:

    PHP:
    1.  <?php
    2.  
    3.  $var = 'varname';
    4.  
    5.  if(preg_match('/=(?:.*?)class(?:.*?)('.$var.')(?:.*?)end/i', 'This is =    class    '.$var.'  end;', $poc)) {
    6.      echo "We've found \$".$poc[1];
    7.  }
    8.  
    9.  ?>
     
  8. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    и preg_quote не забывайте :)
     
  9. kostyl

    kostyl Guest

    Apple
    а если все что угодно кроме <span class="tralyalya"> и </span>?
     
  10. antonn

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

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

    kostyl Guest

    antonn
    ну тогда надо выбрать все символы от // до конца строки и не более? поможешь?
     
  12. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Код (Text):
    1. #//(.+)$#i
    Решение задачи выше я не представляю.
     
  13. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    kostyl
    не успел :)
    до конца строки какой? передаваемой в регулярку, или многострочный текст с переносами строк?
     
  14. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Если посудить чисто логически, то:

    С многострочным текстом можно работать в виде одной строки.
    Тогда какой смысл выбирать весь текст, если он у нас есть? :)
    Правильно, не за чем.
    Поэтому передается строка скорее всего, получаемая средствами РНР или представляемая :)
     
  15. kostyl

    kostyl Guest

    текущей. Я уже сделал, у меня не получалось, потому что регуларки разные накладываются и получалось что в конце строки уже стоит <br />, поэтому сделал так: '#//.*?(<br />)#iu'
     
  16. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Код (Text):
    1. #//.*?(\<br\ /\>|$)#iu
    если перенос или конец текста

    Apple
    подстветку комментариев в коде bbcode видел? еще вопросы? :)
     
  17. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Да, есть один:
    Не понял ни слова из твоей фразы, можешь пояснить? :)
     
  18. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Apple
    а я твою наверное не понял :)
    "С многострочным текстом можно работать в виде одной строки. " - ну да, искать в нем символы переноса и конец строки? :)