Как преобразовать eregi в preg_match?

Я использую lib, который использует

eregi($match="^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$",$line,$matches) 

но поскольку сейчас eregi устарел, я хочу преобразовать выше в preg_match. Я попробовал это как ниже

 preg_match($match="/^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$/i",$line,$matches) 

но он выдает сообщение об ошибке Unknown modifier '[' in файле filename.php

любые идеи, как решить эту проблему?

благодаря

Если вы используете / как разделитель регулярных выражений (т. preg_match('/.../i', ...) ), вам нужно избегать любых экземпляров / в вашем шаблоне, или php будет думать, что это относится к концу шаблон.

Вы также можете использовать другой символ, например % качестве разделителя:

 preg_match('%^http/[0-9]+\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)$%i',$line,$matches) 

Вам нужно избегать разделителей внутри регулярного выражения (в этом случае / ):

 "/^http\\/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$/i" 

Но вы могли бы также выбрать другой разделитель, например ~ :

 "~^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$~i" 

Можешь попробовать:

 preg_match("@^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$@i",$line,$matches) 
  • Вы можете отказаться от $match=
  • Вы используете / в качестве разделителя, и есть еще / присутствует в регулярном выражении после http , что фактически обозначает конец вашего регулярного выражения. Когда PHP видит [ после этого, он жалуется.
  • Вы можете использовать другой набор разделителей как @ или избежать / после http

Вы можете найти хорошую документацию здесь http://anasthecoder.blogspot.ae/2011/12/how-to-change-phps-eregi-to-pregmatch.html