gpt4 book ai didi

php - preg_match_all 之后,如果它在另一行中,如何获取值

转载 作者:行者123 更新时间:2023-11-29 03:17:01 24 4
gpt4 key购买 nike

我的任务是在提到特定单词时获得所需的日期。我想要提到例如“spelmissbruk”的日期,所以我想要 29/7/2014,这就是我想要的。

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

我的问题是在某些情况下日期可能在另一行。

spelmissbruk 29/7/2014 

这是我现在用来提取所需日期的代码。任何提示将不胜感激。

  $subject = $row['anteckning'];$pattern = $wordToFind;        if(preg_match_all("/(\d{1,2}\/\d{1,2}\/\d{4}).*$pattern.*/i",$subject, $matches))  {            $date = $matches[1][0];        }

下面是一个不会按我的意愿保存的日期的例子

            12/7/2018 -  kund ringer in, har fått hem fakturan men känner ej igen den. Kund uppger att det ej är han som tagit lånet. Kund har ej fått hem andra fakturor eller någon kreditupplysning. Swedbank hade hört av sig till kund och meddela tom ett belopp på 15000:- som hade kommit in på hans konto och sedan förts iväg igen till okänt konto. Meddelat att ansökan är identifierad.Bett kund tag kontakt med sin bank, bisnode, polisanmälan och skicka polisanmälan till oss.

这是我想做的

 $move_date = preg_replace("(\d{1,2}\/\d{1,2}\/\d{4})", "-", $subject)$explodeDate = explode("-",$move_date);        print_r($explodeDate);

我的想法是将其分解,并想知道如何删除所有行。

这里有一个日期不会被保存的示例文本,这是因为行格式。我要搜索的是“polis”一词,如果是匹配项,请停止并获取日期。

12/7/2018 - Sofi: kund ringer in, har fått hem fakturan men känner ej igen den. Kund uppger att det ej är han som tagit lånet. Kund har ej fått hem andra fakturor eller någon kreditupplysning. Swedbank hade hört av sig till kund och meddela tom ett belopp på 15000:- som hade kommit in på hans konto och sedan förts iväg igen till okänt konto. Meddelat att ansökan är identifierad.Bett kund tag kontakt med sin bank, bisnode, polisanmälan och skicka polisanmälan till oss.

这是一个文本,可以根据需要保存日期

25/7/2018 - Sofi: detta är bedrägeri, kund son hade gjort bedrägeri på kund, kund har polisanmält, spärrat sin bankdosa osv. Pengarna finns kvar på kunds konto, även ifrån andra bolag. Meddelat 25000:-, därefter slutbetalt. Kund betalar detta idag. Lagt in spärr på kunds begäran

最佳答案

首先,您需要使用 s 修饰符,以便 . 符号搜索多行匹配项。其次,不要使用 .* 因为在你的情况下它总是只匹配第一个日期。第三,使用preg_quote 来引用要查找的字符串中的特殊字符。

作为一个完整的例子,试试这个:

// To avoid errors or unexpected results, we must escape regex characters
// For example, without this we cannot find some punctuation marks
$search = preg_quote('polis', '#');

// A simple regular expression to find the date
// Since we have to use it twice, we do not repeat ourselves
$date_rgxp = '\d{1,2}/\d{1,2}/\d{4}';

// Now it’s time to capture our date, for this we are using a more complex regex
// - Use "#" as delimiter, as it will allow do not escape "/" from the $date_rgxp
// - Use a named group to capture the date (it can be written as "($date_rgxp)", but in this case we should print it as "$m[1]" which is not so good for readability)
// - There can be any characters between the date and search word, but it should not contain another date (to solve this we are using negative lookahead "(?:(?!{$date_rgxp}).)+" instead of ".*")
// - Use the "si" modifiers to perform a case-insensitive multi-line search
if (preg_match("#(?P<date>{$date_rgxp})(?:(?!{$date_rgxp}).)+{$search}#si", $subject, $m)) {
echo $m['date'];
}

关于php - preg_match_all 之后,如果它在另一行中,如何获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53813447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com