[Регулярки & Mod_Rewrite] Задай вопрос, получи ответ

Discussion in 'Общие вопросы программирования' started by Kaimi, 7 May 2015.

  1. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Делать разбор XML регулярками в языке, в котором уже полно средств для удобного разбора XML - это странно. Я бы порекомендовал SimpleXML.
     
  2. Грабитель

    Joined:
    5 Mar 2013
    Messages:
    196
    Likes Received:
    12
    Reputations:
    -7
    Подскажите регулярку которая найдёт соответствие: </tag>.+?--> но с одной оговоркой. чтобы между текстом </tag> и --> не было между ними <!--
    То есть регулярка которая поймает совпадение <\tag>some ... text --> но не отреагирует на текст: <\tag>some .. <!-- .. text -->
    буду благодарен
     
  3. dondy

    dondy Member

    Joined:
    5 Jun 2015
    Messages:
    560
    Likes Received:
    61
    Reputations:
    5
    помогите пожалуйста сделать проверку переменной что бы в ней были только русские буквы большие и маленькие а так же пробелы между словами, если условие не подходит выдавать ошибку
    моя регулярка почему то наоборот работает, все буквы и символы пропускает, а кириллицу запрещает
    PHP:
    if (!preg_match("/[^А-ЯЁ\s]+/ui"$_POST['name'])){
    exit(
    '<p style="text-align:center">разрешена только кириллица</p>');
    }
     
  4. Saint-Sky

    Saint-Sky Elder - Старейшина

    Joined:
    14 Jul 2007
    Messages:
    119
    Likes Received:
    77
    Reputations:
    27
    Слышал, что вроде в патернах проблемы с кодировками...
    А не проще ли сделать наооборот:
    PHP:
    if (preg_match("#[A-Z\s]+$#i"$_POST['name'])){
    exit(
    '<p style="text-align:center">разрешена только кириллица</p>');
    }
     
    #24 Saint-Sky, 30 Jan 2016
    Last edited: 30 Jan 2016
    beginner2010 and dondy like this.
  5. roxblnfk

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

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    я вот не слышал.. обычно проблемы с кодировками у тех, кто не умеет с ними работать
    Ваша регулярка не сработает как надо. Проще убрать оператор отрицания из кода донди и всё :) Ну можно \s на пробел заменить, ибо пробельных символов помимо пробела хватает
     
  6. dondy

    dondy Member

    Joined:
    5 Jun 2015
    Messages:
    560
    Likes Received:
    61
    Reputations:
    5
    как сделать что бы htaccess для заблокированых ip отдавал http код 429 ?
    например deny from 94.139.239.0/32
    отдаётся 403
     
  7. bazaWT

    bazaWT New Member

    Joined:
    19 Mar 2016
    Messages:
    42
    Likes Received:
    0
    Reputations:
    1
    Непонятная ситуация с регуляркой, она выдирает куки из ответа сервера, но только первую куку . Непонятно с ней проблеммы или со снифером ( в других случаях работает идеально.)
    Code:
    +xhr.responseText.match(/_COOKIE.*?<td
    
    class=\"v\">(.*?)<\/td><\/tr>/m)[1]  

    Строка с куками имеет такой вид
    HTTP_COOKIE => __cfduid=d7a5bc6e25f6073221781dbb1d591bd8b1460834789; cf_clearance=b743425f1830b8a97ea106810887d155501c350d-1460834814-604800; ci_session=18d0d22f7e274345354db267ac2ffa7f7bbc76655; login=yXRWPuMMQ2sdfbr34QSgc%252F0KM985nSZ6cDNwuaFfA%253D%253D; password=315675184535gf5711da84e068fa78; chat_token=P38SgjlpTok4egefKIxWuAxK4OHBkWBLnlrDe%2BxMNQ%3D; user_id=78001175; real_user_id=78001175; social_id=296400; __auc=333d425a154208ab39c1e7529ec; OAGEO=NL%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C; OAID=d4f0c5982d37d47a46de6bf377999630; _ym_uid=1460834849654078056; __utma=4986037.946172708.1460834854.1460834854.1460834854.1; __utmc=4986037; __utmz=4986037.1460834854.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _ym_isad=2; __unam=7639673-154208d00ac-329207ba-4; remember_user_token=ebvretB1sGaQPQhQRJIiIker345AkeHY4Y3NYSHpjM0FGL1J0QmV1NkRhZQY6BkVU--efb1e1e4ecd97dcff7f0acd95f06fd2435267067; _session_id=ca5d0e429dbretbrt5443985b93842b7; _ga=GA1.2.946172708.1460834854
     
  8. DezMond™

    DezMond™ Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    3,619
    Likes Received:
    432
    Reputations:
    234
  9. Logan22

    Logan22 Member

    Joined:
    11 Sep 2009
    Messages:
    119
    Likes Received:
    17
    Reputations:
    0
    я бы сделал так. (хотя нет, я бы не юзал регулярку для такой простой цели)

    Code:
    $url= 'http://elkuch-ag.com/no_cache/en/home.html';
    $reg = '#http://(www\.)?(.*?)/#is';
    preg_match($reg, $url, $result);
    print_r($result[2]); // elkuch-ag.com
    
     
  10. Fepsis

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

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
  11. Тот_самый_Щуп

    Тот_самый_Щуп Reservists Of Antichat

    Joined:
    23 Mar 2017
    Messages:
    265
    Likes Received:
    173
    Reputations:
    119
    if(preg_match("|[f]+|im", 'ssss'."\r\n".'fddd')) { echo 'detect'; }

    Почему в данном коде вхождение считается успешным? И выводится detect. Не пойму логику, модификатор s отсутствует, а следовательно, всё что после \r\n учитываться регуляркой не должно, но по факту происходит. Подскажите, почему?
     
  12. freefox

    freefox New Member

    Joined:
    12 Aug 2017
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Неверное суждение. Поиск идёт по всему тексту в любом случае.

    Модификатор "s" здесь вообще ни при чём, он разве что на точку влияет (указывает, эквивалентна ли она символам перевода строки).
    Точно так же, нет необходимости в модификаторе "m" - в данном случае метасимволы начала и конца строки не используются, следовательно - модификатор ни на что не влияет.
    Рекомендую статью "Модификаторы шаблонов"
     
  13. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,553
    Likes Received:
    174
    Reputations:
    99
    Подскажите пожалуйста, если в папке на хостинге находится поддомен, то можно ли в него подгрузить файлы находящиеся в корневой директории через htaccess ?
    необходимо подтянуть общие ресурсы - страницу 404
     
  14. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    htaccess может редиректить запрос, подгрузить можно разве что так
    Code:
    php_value auto_prepend_file "file.php"
    
     
    _________________________
    GAiN and dmax0fw like this.
  15. dmax0fw

    dmax0fw Level 8

    Joined:
    31 Dec 2017
    Messages:
    107
    Likes Received:
    131
    Reputations:
    46
    только перед этим обязательно добавлять
    Code:
    php_value include_path ".:/path/to/file_location"
    ну либо указывать абсолютный путь до файла
    иначе всё сломается при обращении в подкаталоги
     
    #35 dmax0fw, 26 Jan 2018
    Last edited: 26 Jan 2018
    GAiN and t0ma5 like this.
  16. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    full path естественно, я просто для примера файл написал :)
     
    _________________________
    GAiN likes this.
  17. AlekseyWEL

    AlekseyWEL New Member

    Joined:
    20 Aug 2016
    Messages:
    15
    Likes Received:
    1
    Reputations:
    0
    Доброго времени суток! Надеюсь что я попал в нужную тему. У меня есть один вопрос и его суть я опишу чуть ниже:
    Есть сайт в корне которого лежит файл .htaccess
    В нём установлены следующие правила
    Code:
    AddDefaultCharset WINDOWS-1251
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    ###RewriteRule ^[a-zA-Z]+.php?id=(.*) payment.php?id=$1 [QSA,L]
    RewriteRule ^[a-zA-Z0-9]+(.php)? index.php [QSA,L]
    Когда я обращаюсь к главной странице, то срабатывают правила в .htaccess файле. Но вот в чём незадача - главная страница, при обращении к ней, обращается к стороннему сервису и как оказалось, она это делать целых 2 раза, хотя заход на неё происходит один раз!
    Если же я убираю файл .htaccess из корня, то всё работает корректно - сторонний сервис фиксирует только одно обращение к нему!
    Пожалуйста, подскажите с чем это может быть связано и как это можно исправить?
     
  18. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    возможно сторонний сервис, после обращения к нему, отправляет отлуп(запрос) на ваш сайт обратно, без htaccess запрос уходит в 404, с htaccess запрос заворачивается в index.php
    посмотреть логи apache ваше сайта с отключенным htaccess, может там 404/403/50х от запросов стороннего сервиса
     
    _________________________
  19. AlekseyWEL

    AlekseyWEL New Member

    Joined:
    20 Aug 2016
    Messages:
    15
    Likes Received:
    1
    Reputations:
    0
    Посмотрел логи и нигде не увидел 40x 50x ошибок! Пример

    Code:
    bankserv.local: 127.0.0.1 [28/Mar/2018:21:12:14 +0300] "GET /form.php/?redirect=2&ban=2&ip=127.0.0.1&domain=bank2.local&user_agent=Mozilla%2F5.0+%28Windows+NT+6.1%3B+Win64%3B+x64%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F65.0.3325.181+Safari%2F537.36&fxs= HTTP/1.0" 200 - "-" "-"
    bankserv.local: 127.0.0.1 [28/Mar/2018:21:12:14 +0300] "GET /form.php/?sum= HTTP/1.0" 200 - "-" "-"
    bankserv.local: 127.0.0.1 [28/Mar/2018:21:12:14 +0300] "GET /form.php/?card=get&fxs=&fxp=127.0.0.1&user_agent=Mozilla%2F5.0+%28Windows+NT+6.1%3B+Win64%3B+x64%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F65.0.3325.181+Safari%2F537.36&domain=bank2.local HTTP/1.0" 200 14 "-" "-"
    bank2.local: 127.0.0.1 [28/Mar/2018:21:12:14 +0300] "GET / HTTP/1.1" 200 19 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
    Оба сайта: основной и "сервис" мне подконтрольны и находятся на одном локальном сервере на базе OpenServer

    После того как я попробовал убрать файл htaccess и закинул его обратно, всё стало ещё хуже - теперь всё работает как нужно, но теперь я не знаю когда эта проблема может вылезти снова и с чем она была связана.
    Возможно в данный момент пропал смысл разбирать описанную мною задачу, так как она "магическим" способом сама себя разрешила ...
    Но если у вас есть ещё какие либо предположения, пожалуйста озвучьте их, так как возможно я ещё встречусь с подобной задачкой.
    В любом случае, спасибо за ответ.
     
  20. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    обычно магическим способом перестаёт что то работать :D
    мало данных, вообще я не теоретик чтобы что то советовать
    strace/xdebug - помогут прояснить возникновение проблемы, а так же логи системы/apache/etc
     
    _________________________