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

时间:2014-07-31 22:17:57

标签: 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...
}

3 个答案:

答案 0 :(得分:3)

这应该有效:

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

说明:

  • ^是"字符串"
  • 的开头
  • \d是任何数字(0,1,2,...,9)
  • {n}表示"重复n次"
  • \.是一个点
  • \s是一个空格
  • \-是减号
  • .是"任何单个字符"
  • *表示"重复0次或更多次
  • $表示"字符串结尾"

答案 1 :(得分:2)

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

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

功能:

 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 :(得分:0)

使用strpos功能。像这样:

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