gpt4 book ai didi

php - 找出正则表达式的文件分隔符

转载 作者:行者123 更新时间:2023-11-29 02:45:57 24 4
gpt4 key购买 nike

我每天都会收到一个包含一些数据的文件:

B024560HERR S, KARL-HEINZ          FAO031  D      F    18.07.17    01.08.17   14   LH 1162    18.07.17 10:30  12:35   FRA   FAO   FRA       1   LH 1163 01.08.17    FAO     03.01.17  1
Frühbucher 10%
inkl. Reiseleitung
und Transfer ab/bis Flughafen
*REPEATER, BITTE ZIMMERGEGENÜBER DER BAR 3ER
UNVERBINDLICHER KUNDENWUNSCH
B024560HERR S, KARL-HEINZ FAO031 D F 18.07.17 01.08.17 14 LH 1162 18.07.17 10:30 12:35 FRA FAO FRA 1 LH 1163 01.08.17 FAO 03.01.17 1
B024560FRAU S, MARIA FAO031 D F 18.07.17 01.08.17 14 LH 1162 18.07.17 10:30 12:35 FRA FAO FRA 1 LH 1163 01.08.17 FAO 03.01.17 2

链接到这个示例文件:https://www.dropbox.com/s/c39km8htjqq9q4t/example.txt?dl=1

我需要将其导入 mysql 数据库。

所以应该这样划分(使用 | 作为分隔符):

B024560 | HERR S, KARL-HEINZ    |       FAO031  | D    |   F    | 18.07.17    |  01.08.17   | 14   | LH 1162   |  18.07.17 | 10:30  | 12:35   | FRA   | FAO   | FRA      |  1    |LH 1163  | 01.08.17   |  FAO   |   03.01.17  | 1  |
Frühbucher 10%
inkl. Reiseleitung
und Transfer ab/bis Flughafen
*REPEATER, BITTE ZIMMERGEGENÜBER DER BAR 3ER
UNVERBINDLICHER KUNDENWUNSCH |

B024560 | HERR S, KARL-HEINZ | FAO031 | D | F | 18.07.17 | 01.08.17 | 14 | LH 1162 | 18.07.17 | 10:30 |12:35 | FRA | FAO | FRA | 1 | LH 1163 | 01.08.17 | FAO | 03.01.17 | 1 |

B024560 | FRAU S, MARIA | FAO031 | D | F | 18.07.17 | 01.08.17 | 14 | LH 1162 | 18.07.17 | 10:30 | 12:35 | FRA | FAO | FRA | 1 | LH 1163 | 01.08.17 | FAO | 03.01.17 | 2

我做过的最好的事情是使用 this regex :

\s{2,}

所以我的问题是如何找到文件分隔符?还是有另一种或更好的方法来做到这一点?想法是用php读取这个文件并导入到mysql数据库。

最佳答案

这会做你想做的:

(?<=\w)\h{2,}(?=\w)        # horizontal spaces with word character beneath
|
(?=HERR|FRAU) # "HERR" or "FRAU" literally
|
\h+(?=\d{2}\.\d{2}\.\d{2}) # a date
|
\h+(?=\d{2}:\d{2}) # time of date in xx:xx format

查看您的 modified demo on regex101.com(并注意修饰符!)。


整个片段:

<?php

$text = <<<EOT
B024560HERR S, KARL-HEINZ FAO031 D F 18.07.17 01.08.17 14 LH 1162 18.07.17 10:30 12:35 FRA FAO FRA 1 LH 1163 01.08.17 FAO 03.01.17 1
Frühbucher 10%
inkl. Reiseleitung
und Transfer ab/bis Flughafen
*REPEATER, BITTE ZIMMERGEGENÜBER DER BAR 3ER
UNVERBINDLICHER KUNDENWUNSCH
B024560HERR S, KARL-HEINZ FAO031 D F 18.07.17 01.08.17 14 LH 1162 18.07.17 10:30 12:35 FRA FAO FRA 1 LH 1163 01.08.17 FAO 03.01.17 1
B024560FRAU S, MARIA FAO031 D F 18.07.17 01.08.17 14 LH 1162 18.07.17 10:30 12:35 FRA FAO FRA 1 LH 1163 01.08.17 FAO 03.01.17 2
EOT;


$regex = '~
(?<=\w)\h{2,}(?=\w)
|
(?=HERR|FRAU)
|
\h+(?=\d{2}\.\d{2}\.\d{2})
|
\h+(?=\d{2}:\d{2})
~x';

$lines = explode("\n", $text);
foreach ($lines as $line) {
$fields = preg_split($regex, $line);
if (count($fields) > 1) {
print_r($fields);
}
}

?>

请参阅 working on ideone.com

关于php - 找出正则表达式的文件分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42166156/

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