folkesundhedsprogrammet aspektet: forarbejdning bbc 's daglige e - mail

,, hvis du får disse bbc   daglige e - mails, for så vil de have bemærket, at de er temmelig overflødigt.en nyhed, der optræder i " topnyheder " kategori, for eksempel, kan også anføres i " afrika " kategori.faktisk er det ' er ikke usædvanligt at finde den samme post i to eller tre kategorier. her ' en php manuskript, der accepterer en daglig bbc news, e - mail og output, en side, hvor hver enkelt nyhed er opført, bare én gang. at bruge det manuskript, åben den nu bare i en browser, og kopi og pasta en hel bbc 's daglige e - mail til form og' tekst område   og trykke forelægge knap. det manuskript, anvender de begrænsede offentlige maskine klasse, som er tilgængelige på http: //pærer. folkesundhedsprogrammet. netto /pakke /mfs' s /docs /seneste /mfs' s /mfs. html.,  , <?phprequire_once 'FSM.php';class FSM_1 extends FSM {,    function setPayload ( $payload ) { $this->_payload = $payload; },    function getPayload ( ) { return $this -> _payload; },}function SectionName ( $symbol, $payload ) { $payload = "Section:"; },function ItemTitle ( $symbol, $payload ) { $payload = "Title:"; },function ItemSummary ( $symbol, $payload ) { $payload = "Summary:"; },function ItemURL ( $symbol, $payload ) { $payload = "URL:"; }$stack = array ( );,$f = new FSM_1 ( 'WAITING', $stack );$f -> setDefaultTransition ( null, 'WAITING' );,$f -> addTransition ( '.', 'WAITING', 'SECTION_NAME', null );,$f -> addTransitionAny  ( 'SECTION_NAME', 'DELIM_OR_ITEM_TITLE', 'SectionName' );,$f -> addTransition ( '*', 'DELIM_OR_ITEM_TITLE', 'ITEM_SUMMARY', 'ItemTitle' );,$f -> addTransition ( '.', 'DELIM_OR_ITEM_TITLE', 'SECTION_NAME', null );,$f -> addTransitionAny ( 'DELIM_OR_ITEM_TITLE', 'ITEM_TITLE', 'SectionName' );,$f -> addTransitionAny ( 'ITEM_SUMMARY', 'ITEM_Ignore', 'ItemSummary' );,$f -> addTransitionAny ( 'ITEM_TITLE', 'ITEM_Ignore', null );,$f -> addTransitionAny ( 'ITEM_Ignore', 'ITEM_URL', null );,$f -> addTransitionAny ( 'ITEM_URL', 'DELIM_OR_ITEM_TITLE', 'itemurl '); hvis ($_post [' submitid '] = = 1) {,     $titler = system (),     $ignorere = 0,     hver (eksplodere (". n ". $_post [' news ']) som $linje) {,         $linje = beklædning ($linje),         hvis ($linje = = ' ') (fortsat)},         $f - > setpayload (' '),,,         $f - > proces (substr (%, 0, 1),         $nyttelast = $f - > getpayload (),         hvis ($nyttelast.= ' ') {,             hvis ($nyttelast = = ' afsnit: ' $linje = = ' muligheder og hjælpe ') {pause.},             hvis ($nyttelast = = ' titel: ') {,                 hvis (in_array ($, $titler)) ($ignorere = 1},                 andet {,                     $ignorere = 0,                     array_push ($titler, $linje),                },            },             hvis ($ignorere = = 0) {,                 hvis ($nyttelast = = ' titel: ') (echo stripslashes ($linje)." < br /> \\ n &; quot;},                 hvis ($nyttelast = = '. oversigt: ') (echo stripslashes ($linje)." < br /> \\ n &; quot;},                 hvis ($nyttelast = = '. url: http: //') (echo " < en href = ' ".$." ' mål = ' _blank ' > ".$." < /a > < p /> \\ n &; quot;},            },        },    },     echo " < p /> \\ n &; quot,,,?> < form handlingen = " <?echo $_server [' php_self ']?>" method="post" name="adminlogin" id="adminlogin" style="display:inline;">,    <textarea name="news" id="news" rows="20" cols="200"></textarea><br/>,    <input name="Submit" type="submit" id="Submit" value="Submit">,    <input name="submitid" type="hidden" id="submitid" value="1"/>,</form>,, Here are some notes about how it works:, Fortunately the lines in the BBC emails are sequenced in a particularly simply way and this is reflected in the collection of transition rules.,When a transition rule results in a call to a function, f.eks. sectionname, hvoraf det fremgår, at en del navn (f.eks. " topnyheder ") er blevet anerkendt, funktion, ved at sætte signaler i denne $nyttelast i overensstemmelse hermed.jeg har forlænget den base, klasse, således at de $nyttelast, der stilles til rådighed for disse funktioner er også til rådighed for koder, der instantiate den udvidede klasse. resultatet er, at hver gang en linje læses fra daily mail er det gået til (udvidet) mfs' s for anerkendelse og behandles i overensstemmelse hermed, et lille punkt.: " kol " fastsættelse for textarea i form kan forekomme overdrevent store.det er på denne måde, således at linjer fra e - mail er ikke færdig, så det parsing ikke er unødigt komplicerede.



Previous:
Next Page: