Мастер класс в регулярках

Discussion in 'PHP' started by FunOfGun, 9 Aug 2013.

  1. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    71
    Reputations:
    124
    Есть следующая строка:
    Code:
     "здесь пробелы должны остаться"       и еще хуча пробелов etc. все должны быть удалены "опять фрагмент, в котором пробелы должны остаться"
    т.е. пробелы между 1 и 2, а так же 3 и 4 кавычками должны остаться, а вот между 2 и 3 должны быть удалены.
    Есть хоть какой-то способ сделать это чистыми регулярками? Заранее благодарен.
     
  2. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    130
    Reputations:
    4
    ну оно запонинает то что в крыглых скобках. так что что то типа
    /("[a-zA-Z0-9]*")/ должно запоминать все входяторы :) в третий агрумент, если передать третий аргумент в preg_match_all . ну а потом со второго наверное элемента ( 0 вроде как сама строка , 1 первое совпадение (могу и ошибатся) ) короче со второго все preg_replace на ""
    правда будет бага с тем что если будет "1","1" то удалит всетаки первую . надо какой то костыль писать на этот случай
     
    #2 barnaki, 11 Aug 2013
    Last edited: 11 Aug 2013
  3. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    http://rubular.com/r/qgZ4LbBRVt - если бы ты писал на Си то тебе бы возвращался массив смещений, для PHP думаю тебе подойдет strpos мол

    if strpos($str,'"')!==false $flag=!$flag;
    if $flag $str=preg_replace("\s",'',$str);

    1. находишь первую кавычку - ставишь флаг например false;
    2. находишь вторую кавычку - ставишь флаг true - значит надо заменить пробелы на пустоту - находишь следующую кавычку и substr() вырезаешь строку в ней убираешь пробелы... ставишь флаг false;

    а строку склеиваешь... $output.=substr()... ну надеюсь понял мысль
     
    _________________________
  4. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    130
    Reputations:
    4
    не не. первоге совпадение и будет та строка которая тебе нужна.не нужно ничего удалять. прсто бери первое совпадение