如何使用PHP检查给定格式的字符串?

如何使用PHP检查给定格式的字符串?,php,string,match,Php,String,Match,我的项目中有许多标题,如: 00.00.2014 - Headline Description e.t.c. 我想用php检查给定的字符串是否包含前面的格式00.00.0000-。-后面的部分无关紧要 有人能帮我做点什么吗 $format = '00.00.0000 -'; if ($string MATCHES $format IN FRONT) { // ...some code... } 使用该函数。大概是这样的: if (strpos($string,'00.00.0000

我的项目中有许多标题,如:

00.00.2014 - Headline Description e.t.c.
我想用php检查给定的字符串是否包含前面的格式
00.00.0000-
-
后面的部分无关紧要

有人能帮我做点什么吗

$format = '00.00.0000 -';

if ($string MATCHES $format IN FRONT) {
    // ...some code...
}
使用该函数。大概是这样的:

if (strpos($string,'00.00.0000 -') !== true) {
//some code
}

我没有一个开发环境来测试这一点,但我会给你一些伪代码:

我不确定上下文,但您可以在任何给定字符串上测试此函数:

功能:

 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。如果您需要确保它是真正的零,那么只需将字符串剪切为前十个字符并进行比较。

这应该可以:

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

  • ^
    是“字符串的开头”
  • \d
    是任意数字(0、1、2、…、9)
  • {n}
    表示“重复n次”
  • \。
    是一个点
  • \s
    是一个空格
  • \-
    是减号
  • 是“任何单个字符”
  • *
    表示“重复0次或更多次`
  • $
    表示“字符串结束”

我想问你你试过什么,但我可以猜到答案是什么对这个例子不起作用:
00.00.2014-标题说明e.t.c.
如果你没有注意到并自己更改它,我错误地将
设置为false
而不是
true
。现在已经更正了。但是@wil93的解决方案更好。哇这不是很神奇。谢谢你的解释!回答得好。正是我所需要的和thx对preg_macth函数的解释。不,很清楚!!!