-12

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)
4

1 に答える 1