我需要帮助编写一个脚本,在脚本中搜索可能出现的日期。
它应该查找所有形式的日期示例:
Dd-m1yyyy
sat-sun
Sunday 28th July
等等...
然后返回找到的日期
答案 0 :(得分:5)
您可以使用preg_match或preg_match_all函数
http://php.net/manual/en/function.preg-match.php
http://www.php.net/manual/en/function.preg-match-all.php
这是正则表达式语法指南
http://www.php.net/manual/en/regexp.reference.meta.php
您需要创建一个您尝试提取的所有可能日期格式的列表,然后构建与这些日期匹配的正则表达式。
如果您可以发布所有这些日期格式的列表,那么我相信如果您遇到问题,人们会帮助您创建正则表达式
示例日期01-12-1970
$pattern = "/\d{2}\-\d{2}\-\d{4}/";
if (preg_match($pattern, $content, $matches)) {
echo "Found Match on {$matches[0]}";
}
示例日期:7月28日星期日
这个匹配
跟随者的任何一个词(假设它是一个月,如果模式的其余部分匹配)
$pattern = "/\w+day\s\d{1,2}(st|th|rd)\s\w+/";
if (preg_match($pattern, $content, $matches)) {
echo "Found Match on {$matches[0]}";
}
如果你需要测试你的正则表达式,有很多在线正则表达式工具。
答案 1 :(得分:1)
我应该建议Preg_Match
(http://php.net/manual/en/function.preg-match.php)
此类日期的示例:04-09-1990
$matches = array();
preg_match('/(\d{2})-(\D*)-(\d{4})/', $string, $matches)
扩展正则表达式的方式。很好的解释http://www.regular-expressions.info/dates.html
* 提示在http://regexlib.com/上搜索合适的正则表达式
答案 2 :(得分:-1)
正则表达式将是最佳解决方案,但您也可以使用由您正在查找的数组组成的数组。然后使用strpos遍历数组以查找是否(以及在哪里)您要查找的字符串存在。关注一周中的几天和几个月的名称和缩写。如果您搜索该月的某一天,您将获得太多误报结果。