Как проверить строку для заданного формата с помощью 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...
}
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 или более раз" -
$
означает "конец строки"
У меня нет среды разработки, чтобы протестировать это, но я дам вам некоторый 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. Если вам нужно чтобы убедиться, что это буквально нули, просто обрежьте свою строку, чтобы она была первыми десятью символами, и сравните ее.
Используйте strpos
функция. Что-то вроде этого:
if (strpos($string,'00.00.0000 -') !== true) {
//some code
}