Как проверить строку для заданного формата с помощью PHP?


В моем проекте много заголовков, таких как:

00.00.2014 - Headline Description e.t.c.

Я хочу проверить с помощью php, содержат ли данные строки формат 00.00.0000 - спереди. Часть после - не имеет значения.

Может ли кто-нибудь помочь мне с чем-то вроде:

$format = '00.00.0000 -';

if ($string MATCHES $format IN FRONT) {
    // ...some code...
}
Author: wil93, 2014-08-01

3 answers

Это должно сработать:

if (preg_match("/^\d{2}\.\d{2}\.\d{4}\s\-\s.*$/", $string) === 1) {
    // $string matches!
}

Объяснение:

  • ^ - это "начало строки"
  • \d - любая цифра (0, 1, 2, ..., 9)
  • {n} означает "повторяется n раз"
  • \. является точкой
  • \s - это пространство
  • \- - знак минус
  • . - это "любой отдельный символ"
  • * означает "повторяется 0 или более раз"
  • $ означает "конец строки"
 3
Author: wil93, 2014-07-31 22:39:26

У меня нет среды разработки, чтобы протестировать это, но я дам вам некоторый psuedocode:

Я не уверен в контексте, но вы можете проверить эту функцию на любой заданной СТРОКЕ:

Функция:

 Boolean hasCorrectFormat($myString){

         //Here take the string and cut it into a char array.

         $charArray = str_split($myString); 

         //This will give you a char array. Compare the first 12 elements of this
         //array to see if they are correct. If its supposed to be number make
         //sure it is, if its supposed to be a "." make sure it is..etc
         //"00.00.0000 -" is 12 characters. 

         if(!isNumeric(charArray[0])){
             return false;
          }
          else if(!isNumeric(charArray[1])){
               return false;
          }
          else if(charArray[2] != "."){
               return false;
          }
        //so on and so forth.....
           else {return true}
    }

Как я уже сказал, я не могу это проверить, и я почти могу гарантировать, что этот код не будет выполняться. Это должно дать вам логику, хотя.

Редактировать: также я написал это, предполагая, что вы буквально не имеете в виду "00.00.0000", а скорее "xx.xx.xxxx" x - любое число 0-9. Если вам нужно чтобы убедиться, что это буквально нули, просто обрежьте свою строку, чтобы она была первыми десятью символами, и сравните ее.

 2
Author: user3521471, 2014-07-31 22:32:45

Используйте strpos функция. Что-то вроде этого:

if (strpos($string,'00.00.0000 -') !== true) {
//some code
}
 0
Author: Peter Noble, 2014-07-31 22:37:59