Casimir et Hippolyte の助けを借りて、以下の例に示すようなテキストを解析しようとしました (注: 私の元の質問はサンプル テキストを単純化しすぎていました。しかし、キーを指で叩いたり、壁を頭で叩いたりしても、私はまだ賢明ではありません)。
これが私がこれまでに持っているものです...データをエスケープ(スラッシュを追加)しようとしましたが、$subjectを生の(er)形式で投稿すると思いました...
<?php
$subject = "
Ydqk‚_,¦#¦#À%¦#¦#¦#¦#¦#èeèe2%Ž¦#¦#¦#Cf¦#¦#¦#¦#qk¦#¦#¦#¦#¦#¦#¦#¦#¦#Ð ð:SOME COMPANY<br />
WITH A LONG NAME<br />
The Big Barn, 23 London Lane, Cheltenham, Glos. GL1 1GL<br />
Tel. 022234 567890 Fax. 02234 345678 Email. <a href= mailto:info@some.co.uk </a>info@some.co.uk<br />
Company: Another Company (AKA) – 22 London Lane, Cheltenham, GL1 2GL<br />
FAO: Mr D. Mistify/ A. Clarity/ Jo Bloggs<br />
PROJECT OMAHA <br />
<br />
<br />
CONTRACT No. 14 DATE 10/6/13 <br />
No. QUESTION ANSWER <br />
<br />
973 <br />
Hi, it's me again:<br />
I'm very, very confused. Why do regular expressions seem such a dark art?<br />
Surely it can't be as hard as I manage to make it seem?<br />
Please advise<br />
Thank you. <br />
Date Required – <br />
17/6/13 <br />
<br />
Signed for and on behalf of Some Company with a Long Name Limited<br />
Me Again – Senior Moment<br />
________________________________________________________<br />
<br />
<br />
<br />
<br />
<br />
<br />
QUESTION / ANSWER SHEET<br />
Some Company with a Long Name<br />
<br />
Question and Answer System<br />
AA414<br />
’“¸¹ÉÊËÌÔ...descends into gibberish...
";
$pattern = '~
Project\hNo\.\h\d++\hDATE\h
(?<date>\d{1,2}\/\d{1,2}\/\d{1,2})
\s++No\.\hQUESTION\hANSWER\s++
(?<No>\d++)\s++
# all characters but D or D not followed by "ate Required"
(?<desc>(?>[^D]++|D(?!ate\hRequired))+)
\D++
(?<date_required>\d{1,2}\/\d{1,2}\/\d{1,2})
~x';
preg_match_all($pattern, $subject, $matches, PREG_SET_ORDER);
print_r($matches);
?>
以下を抜粋したいと思います。
- 発行日 (2013 年 10 月 6 日) (dd/mm/yyyy)
- 質問番号 (973)
- 説明
- 必要な日付 (2013 年 6 月 17 日) (dd/mm/yyyy)