如何使用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!
}
说明:
是“字符串的开头”^
是任意数字(0、1、2、…、9)\d
表示“重复n次”{n}
是一个点\。
是一个空格\s
是减号\-
是“任何单个字符”
表示“重复0次或更多次`*
表示“字符串结束”$
00.00.2014-标题说明e.t.c.
如果你没有注意到并自己更改它,我错误地将设置为false
而不是true
。现在已经更正了。但是@wil93的解决方案更好。哇这不是很神奇。谢谢你的解释!回答得好。正是我所需要的和thx对preg_macth函数的解释。不,很清楚!!!