Регулярные выражения

Тема в разделе "PHP", создана пользователем AlexeyForpost, 25 ноя 2009.

  1. zerg

    zerg Administrator Команда форума

    Регистр.:
    18 июл 2008
    Сообщения:
    4.254
    Симпатии:
    3
    Ответ: Регулярные выражения

    значит это не из-за точки с запятой
     
  2. AlexeyForpost

    AlexeyForpost Member

    Регистр.:
    15 июл 2009
    Сообщения:
    540
    Симпатии:
    0
    Ответ: Регулярные выражения

    Не может быть такого :)
    С точкой запятой не парсиит,а без неё парсит)
    Волшебство))
     
  3. AlexeyForpost

    AlexeyForpost Member

    Регистр.:
    15 июл 2009
    Сообщения:
    540
    Симпатии:
    0
    Ответ: Регулярные выражения

    Здравствуйте.
    Подскажите пожалуйста регулярку для
    Необходимо спарсить значение value, если домен в зоне ру
     
  4. FFman

    FFman New Member

    Регистр.:
    20 сен 2009
    Сообщения:
    171
    Симпатии:
    0
    Ответ: Регулярные выражения

    PHP:
    preg_match("!слово1 (.*?) слово2!i""слово1 АЯяаABC-_!:xyz слово2"$out);
    // preg_match("![a-zA-Z0-9]+ (.*?) [a-zA-Z0-9]+!i", "слово1 АЯяаABC-_!:xyz слово2", $out);
    echo $out[1];
     
  5. zerg

    zerg Administrator Команда форума

    Регистр.:
    18 июл 2008
    Сообщения:
    4.254
    Симпатии:
    3
    Ответ: Регулярные выражения

    эта песня хороша, начинай сначал..., ты не правильно ставишь условие, как кто-то там сказал если ничего не понимаешь - представь что ты самый умный и ответь на этот вопрос. А чтобы легче было отвечать http://depositfiles.com/ru/files/2682332, в книжке про регулярки все подробно рассказано.
     
  6. AlexeyForpost

    AlexeyForpost Member

    Регистр.:
    15 июл 2009
    Сообщения:
    540
    Симпатии:
    0
    Ответ: Регулярные выражения

    Подскажите как удалить
    0123456789'>
    Количество цифр неизвестно.
    Пробовал, ругается на известный символ {
    $document=preg_replace ("[0-9]{0,10}'>is", "", $document);
     
  7. FFman

    FFman New Member

    Регистр.:
    20 сен 2009
    Сообщения:
    171
    Симпатии:
    0
    Ответ: Регулярные выражения

    AlexeyForpost,
    $st = "0123456789'>";
    $st = preg_replace("![0-9]+'>!si", "", $st);
    echo $st;
     
  8. AlexeyForpost

    AlexeyForpost Member

    Регистр.:
    15 июл 2009
    Сообщения:
    540
    Симпатии:
    0
    Ответ: Регулярные выражения

    Подскажите пожалуйста как удалить все джава скрипты?
    * - любое количество произвольных символом

    И ещё вопросик по регулярки.
    Как прег_матчем вырезать
    <a href="http://sub.domain.com/dir/article/12345678/#date>
    Необходимо вырезать число 12345678
    Оно может быть 1-8ми значным.
     
  9. moneydigger

    moneydigger New Member

    Регистр.:
    26 авг 2009
    Сообщения:
    163
    Симпатии:
    0
    Ответ: Регулярные выражения

    По регуляркам хорошая программа RegexBuddy 3. При составлении регулярки сразу проверяем в проге. По функционалу лучше не встречал. Если надо могу выложить.
     
  10. Vincent

    Vincent New Member

    Регистр.:
    10 ноя 2010
    Сообщения:
    10
    Симпатии:
    0
    Ответ: Регулярные выражения

    Помогите пожалуйста с регуляркой. Требуется выдернуть из страницы вот такой текст:
    HTML:
    <a target="_blank" href="http://example.com/" rel="nofollow" class="external">
    Имя домена мне заранее известно - example.com, а будет ли там target="_blank" и прочее - загадка.
    Заранее спасибо.
    Если не трудно выложи.
     
  11. zerg

    zerg Administrator Команда форума

    Регистр.:
    18 июл 2008
    Сообщения:
    4.254
    Симпатии:
    3
    Ответ: Регулярные выражения

    Vincent, вот так будет
    PHP:
    preg_match_all('|<a.*?href="(.*?)" rel="nofollow" class="external">|i'$input$out);
     
  12. Vincent

    Vincent New Member

    Регистр.:
    10 ноя 2010
    Сообщения:
    10
    Симпатии:
    0
    Ответ: Регулярные выражения

    Направление понял, мне почти подходит вот такой пример:
    PHP:
    $url 'example.com';
    $one 'любой текст <a href="http://example1.com/" class="external">ссылка1</a> любой текст <a target="_blank" href="http://example.com/" class="external">ссылка2</a> любой текст <a target="_blank" href="http://example2.com/" class="external" rel="nofollow">ссылка1</a> ';
    preg_match("|<a.*?$url.*?>|i"$one$two);
    Но столкнулся с проблемой, на выходе я получаю в массиве не это
    HTML:
    <a target="_blank" href="http://example.com/" class="external">
    как хотелось бы, а выходит вот так:
    HTML:
    <a href="http://example1.com/" class="external">ссылка1</a> любой текст<a target="_blank" href="http://example.com/" class="external">
    Пробовал сделать что то типа
    PHP:
    preg_match("|<a.*?{,50}$url.*?>|i"$one$two);
    Но она не работает. Если кому не трудно помогите составить правильную регулярку.
     
  13. zerg

    zerg Administrator Команда форума

    Регистр.:
    18 июл 2008
    Сообщения:
    4.254
    Симпатии:
    3
    Ответ: Регулярные выражения

    Vincent, а что нельзя в мою регулярку подставить домен, вырезать урл и самому сформировать ссылку прогнав массив циклом?
     
  14. Vincent

    Vincent New Member

    Регистр.:
    10 ноя 2010
    Сообщения:
    10
    Симпатии:
    0
    Ответ: Регулярные выражения

    Эта |<a.*?$url.*?>|i твоя регулярка, за исключением того, что я подменил rel="nofollow" class="external" на .*?, потому что незнаю будут они или нет. Ну и домен мне заранее известен, я его положил в переменную $url.
    Я вот только не понимаю почему эта регулярка извлекает не
    <a target="_blank" href="http://example.com/" class="external">,
    а делает так
    <a href="http://example1.com/" class="external">ссылка1</a> любой текст<a target="_blank" href="http://example.com/" class="external"> (лишнее подчеркнул).
    Мне не нужно ее формировать самому, требуется извлечь это <*url*>. Циклы тут ненужны.

    В моем случае как то так
    [HIDE="1"]
    PHP:
    preg_match("|<a.{0,80}example\.com.*?>|i"$input$out);
    [/HIDE]
     
    Последнее редактирование: 11 ноя 2010
  15. zerg

    zerg Administrator Команда форума

    Регистр.:
    18 июл 2008
    Сообщения:
    4.254
    Симпатии:
    3
    Ответ: Регулярные выражения

    Потому что она берет с самого начала нужно исключить ">" или делай 2 регулярки с target="_blank" и без
     
  16. Vincent

    Vincent New Member

    Регистр.:
    10 ноя 2010
    Сообщения:
    10
    Симпатии:
    0
    Ответ: Регулярные выражения

    Если не трудно, покажи как должно выглядеть.

    Я вообще не знаю что будет в той ссылке.
    HTML:
    Будет ли она такая
    <a target="_blank" href="http://example.com/" class="external">ссылка2</a> 
    или <a href="http://example.com/" >ссылка3</a>
    или <a rel='nofollow' href='http://example.com/' >ссылка4</a>
    или <a class='link' href='/goto?http://www.example.com/' >ссылка5</a>.
    Знаю только куда должно ссылаться example.com
     
  17. zerg

    zerg Administrator Команда форума

    Регистр.:
    18 июл 2008
    Сообщения:
    4.254
    Симпатии:
    3
    Ответ: Регулярные выражения

    PHP:
    preg_match("|(<a[^>]*$url.*?>)|i"$one$two); 
     
  18. Vincent

    Vincent New Member

    Регистр.:
    10 ноя 2010
    Сообщения:
    10
    Симпатии:
    0
    Ответ: Регулярные выражения

    Есть HTML код:
    HTML:
    <tr>
    <td class='left'>some txt <span style='color:#444'>OK</span></td>
    <td class='left'>some txt</td>
    </tr>
    <tr>
    <td class='left'>some txt <span style='color:#ffffff'>OK</span></td>
    <td class='left'>some txt</td>
    </tr>
    <tr>
    <td class='left'>some txt <span style='color:#ff0000'>OK</span></td>
    <td class='left'>some txt</td>
    </tr>
    <tr>
    <td class='left'>some txt <span style='color:#ffffff'>OK</span></td>
    <td class='left'>some txt</td>
    </tr>
    Я написал регулярное выражение, чтобы получить все между <tr>...</tr> имеющее внутри color:#ff0000. Вот оно
    <tr>.*<span style='color:#ff0000'>OK<\/span>.*?<\/tr>
    Но это выражение находит не один блок <tr>...</tr>, а еще два расположенных выше.
    Какое нужно регулярное выражение, чтобы найти четко блок <tr>...</tr> имеющий внутри color:#ff0000 ? Спасибо.
     
  19. zerg

    zerg Administrator Команда форума

    Регистр.:
    18 июл 2008
    Сообщения:
    4.254
    Симпатии:
    3
    Ответ: Регулярные выражения

    Вот так попробуй
    PHP:
    <tr>.*?<span style='color:#ff0000'>OK<\/span>.*?<\/tr>
     

Поделиться этой страницей