2009-11-24 5 views
0

Я попытался это:Использование регулярных выражений в PHP

$mtcDatum = preg_match("/[0-9]{2}/[0-9]{2}/[0-9]{4}/", $lnURL); 

Это возвращает сообщение об ошибке:

Предупреждение: preg_match() [function.preg-матчевую]: Неизвестный модификатор '['

Почему это не работает? Я привык к тому, как Linux выполняет регулярное выражение, не работает ли PHP с регулярным выражением по-другому?

+0

Хех, да, так что на основе davearchie и ответы Бена Джеймса, десятый символ в регулярном выражении в настоящее время в конце вашего регулярного выражения, а функция не знает, что сделайте с оставшейся кучей символов. – Kzqai

ответ

5

синтаксис PHP интерпретирует символ «/» в конце вашего шаблона , Вам нужно бежать вперед косую черту:

preg_match("/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/", $lnURL); 
2

Вам нужен символ разделителя вокруг вашего шаблона (это то, что отделяет шаблон от любых модификаторов). Обычно / используется, но так как это часть строки, которую вы пытаетесь соответствовать, вы можете использовать другой символ, #:

$mtcDatum = preg_match("#[0-9]{2}/[0-9]{2}/[0-9]{4}#", $lnURL); 
+0

Не должно быть '' # [0-9] {2}/[0-9] {2}/[0-9] {4} # "' – Amarghosh

+0

И что, если я уйду от косой черты ''/[0-9] {2} \/[0-9] {2} \/[0-9] {4}/"' – Amarghosh

+0

Совершенно верно. Обратите внимание, что альтернативой является добавление косой черты в качестве разделителя, а затем удаление всех косых черт в вашем шаблоне. Это не очень читаемо, поэтому он предлагает выбрать альтернативный разделитель. –