Publish your project for free and start receiving offers from freelance contractors in serveral minutes after publication!

Исправить баг в регулярке

project expired


Имеется html, который начинается на

<html lang=uk-x-mtfrom-en><head>....

180 - 186 строки кода:


и такая регулярка, которая должна извлечь язык из тела страницы


preg_match("/<html[^>]+lang=[\"']?(.*?)[\"']?[^>]?*>/is",$html,$lang_match);

if(empty($lang_match))

{

    preg_match("/<html[^>]+lang=([^\"'>]+).*?>/is",$html,$lang_match);    

}

echo "<pre>".print_r($lang_match,true)."</pre>";

if(!empty($lang_match)) $lang = $lang_match[1];


Выбивает такое предупреждение:


Warning: preg_match(): Compilation failed: nothing to repeat at offset 35 in Text.php on line 180 


180 строка в коде подчеркнута снизу.


Нужно подсказать, что не так в этой регулярке, почему происходит Warning?




  1. 1 day500 ₽
    Андрей Грибин
     304 

    Здравствуйте!
    Готов разобраться, пишите.
    [email protected]
    https://vk.com/id349754663
    whatsapp/skype/telegram: 79291226015

    Russia Vologda | 6 May at 09:38 |
  2.  freelancer isn't working in the service any longer
  3. 1 day120 ₴
    Андрей Татарников
     146   1  0

    Добрый день. Имею опыт работы с регулярными выражениями и их применением на сайтах . Мой аккаунт.  

    Ukraine Kharkiv | 6 May at 11:37 |
  4. 1 day100 ₴
    Volodymyr Piskun
     328   6  0

    Держите бесплатную консультацию от меня :)
    В вашей регулярке идут подряд два знака повторения:
    * и ?
    (в самом конце).
    Оставьте один из них, который вам нужен - и ошибка пропадет.
    В данном случае лучше подходит знак вопроса - ?.
    preg_match("/]+lang=[\"']?(.*?)[\"']?[^>]?>/is",$html,$lang_match);

    Ukraine Kyiv | 6 May at 21:04 |
  5. 1 day250 ₴
    Марина Высоцкая
     811   15  0

    Здравствуйте, Дмитрий.
    Разбираюсь в регулярных выражениях, буду рада помочь.

    Ukraine Kyiv | 7 May at 02:23 |
  1. proposal withdrawn
  2. proposal withdrawn