正则表达式,PHP preg_match 使函数如何在字符串以 start_to_date 开头时返回 true [重复]
Posted
技术标签:
【中文标题】正则表达式,PHP preg_match 使函数如何在字符串以 start_to_date 开头时返回 true [重复]【英文标题】:Regex, PHP pregmatch make function how to return true if string start with start_to_date [duplicate] 【发布时间】:2013-01-17 14:59:54 【问题描述】:可能重复:php: How to check if a string starts with a specified string?
我正在努力创建一个函数来检查这个字符串是否从 start_to_date 开始,下面是我的实现。
$string = 'start_to_date-blablablabla';
if(cek_my_str($string))
echo "String is OK";
// tes again
$string2 = 'helloworld-blablablabla';
if(cek_my_str($string2))
echo "String not OK";
function cek_my_str($str)
// how code to return true if $str is string which start with start_to_date
谢谢。
【问题讨论】:
在提出已经被提出并再次回答的问题或在搜索引擎中很容易找到答案的问题之前,请先进行研究。 @AlanIchal;你的语气很烂! php.net/strpos - 我们现在可以结束这个问题吗?谢谢。 是的,人们对这个臭小子投了反对票! @AlanIchal:你需要在 Stack Overflow 上BE NICE。 “你的答案很糟糕”不被认为是“好”。 【参考方案1】:要使用正则表达式,您可以:
return preg_match('/^start_to_date/', $str);
关键参考:http://www.regular-expressions.info/
但是,PHP Manual for preg_match states
如果您只想检查一个字符串是否包含在另一个字符串中,请不要使用 preg_match()。请改用 strpos() 或 strstr() ,因为它们会更快。
顺便说一下,你应该看看单元测试:http://www.phpunit.de/manual/current/en/
这是一种在可重用测试中准确封装您正在执行的操作的方法。
【讨论】:
为什么这个问题也被否决了?这是非常基本的水平,但人们必须从某个地方开始,对吧? 回复:问题被否决了,好吧,我明白了。回复:我的回答被否决了,你对这个问题的评论(我没有足够的代表来回答)“人们被否决了,因为他们提出了过于复杂的解决方案,而不是简单地建议 strpos”好吧问题说明preg_match
,所以我认为这是一个起点,而不是终点。显然,在“start_to_date”标记之后有一些东西,很可能需要进一步解析。看来这个人正在研究正则表达式,所以告诉他们使用strpos
是无效的。
无论如何,如果它是重复的,为什么不直接标记它呢?
好吧,标题同时说明了“regex”和“preg_match”,所以我没有做任何假设。
所以你做了,投票。 (至少记录在案)【参考方案2】:
在这种情况下,最好的做法是:
if(strpos($string, 'start_to_date') === 0) ...
strpos()
检查 'start_to_date' 是否在位置 0(开始)
【讨论】:
【参考方案3】:function cek_my_str($str)
$find = 'start_to_date';
$substr = substr($str, 0, strlen($find));
if($substr == $find)
return true;
else
return false;
【讨论】:
【参考方案4】:怎么样:
function cek_my_str($str)
return preg_match('/^start_to_date/', $str)
【讨论】:
投反对票有什么原因吗? OK 这解决了。 tnx 人。我只是添加 if !preg_match blabla return false 和 default return true。谢谢。以上是关于正则表达式,PHP preg_match 使函数如何在字符串以 start_to_date 开头时返回 true [重复]的主要内容,如果未能解决你的问题,请参考以下文章