我正在尝试在遇到某个特定单词时从一个巨大的文本字符串中获取日期。因此,在下面显示“ 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。
答案 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"
}
}