得到错误的日期

时间:2018-12-14 13:19:43

标签: php date

我正在尝试在遇到某个特定单词时从一个巨大的文本字符串中获取日期。因此,在下面显示“ polis”的文本字段中,我想要日期29/7/2017

因此,模式字段是我在此情况下使用的特定单词“ polis”,主题是包含整个文本字段的数组。

22/10/2013 ånger, ska bet 6,428:-, 
bet 6428, 2109+2016+2303 inlagt
23/5/2014 bl 26/5, medd inga avgifter) 
29/7/2014 spelmissbruk 
29/7/2014 polis
29/12/2014 föreslår godkänn
27/4/2016 Föreslår godkänn 

这是我尝试过的:

$subject = $row['anteckning'];
$pattern = $wordToFind;
preg_match("/$pattern/",$subject,$matchWord);
//print_r($matchWord);

if($matchWord[0] == $pattern) {
    $test1 = strstr($subject, $matchWord[0]);
    $testword = substr($test1, 0,8);
    echo $testword;                    
}

我的问题是我第一次约会的日期是22/10/2013。

2 个答案:

答案 0 :(得分:1)

 preg_match_all("/$pattern/",$subject,$matchWord);

您正在使用preg_match,因此,您将是唯一找到的唯一值。

当然,您必须对代码进行一些修改,但是您将基于preg_match_all函数获得所有值,因此您可以根据需要对其进行处理。

答案 1 :(得分:0)

您可以将.*用作preg_match_all字符串两端的通配符,以一次捕获全部内容。

我使用i使其不区分大小写,以确保它捕获了polis, Polis, POLIS,依此类推。

编辑:我看到您现在只想要日期。在正则表达式中添加了日期捕获。
$ matches [1]仅保留日期,而$ matches [0]将保留整行。

preg_match_all('/(\d{1,2}\/\d{1,2}\/\d{4}).*polis.*/i', $str, $matches);

var_dump($matches);

输出:(我的例子)

array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(15) "29/7/2014 polis"
    [1]=>
    string(15) "28/4/2016 POLIS"
  }
  [1]=>
  array(2) {
    [0]=>
    string(9) "29/7/2014"
    [1]=>
    string(9) "28/4/2016"
  }
}

https://3v4l.org/Bo7ON