Php: le traitement de la bbc courriel quotidien
Si vous recevez ces BBC quotidiennement des e-mails trop alors vous aurez remarqué qu'ils sont assez redondants. Une nouvelle qui apparaît dans le 'TOP STORIES' de la catégorie, par exemple, peuvent aussi apparaître dans le 'AFRIQUE' de la catégorie. En fait, c' & #39 s n'est pas rare de trouver le même objet dans deux ou trois catégories.
Ici & #39 s un script PHP qui accepte un quotidien BBC news e-mail et les sorties d'une page dans laquelle chaque élément d'information est indiqué juste une fois.
Pour utiliser ce script, il suffit de l'ouvrir dans un navigateur et copier-coller l'intégralité de la BBC daily mail dans le formulaire & #39 s zone de texte et appuyez sur le bouton submit.
Ce script utilise la Machine à états Finis classe qui est disponible à http://pear.php.net/package/FSM/docs/latest/FSM/FSM.html.
fonction de setPayload de dollars (charge utile ) { $this->_payload = $de la charge utile }
fonction de getPayload ( ) { return $this -> _payload }
}function nom de section (symbole$, $de la charge utile ) { $de la charge utile = ':' }
fonction de ItemTitle (symbole$, $de la charge utile ) { $de la charge utile = 'Titre' }
fonction de ItemSummary (symbole$, $de la charge utile ) { $de la charge utile = 'Résumé:' }
fonction de ItemURL (symbole$, $de la charge utile ) { $de la charge utile = 'URL:' }$stack = array ( )
$f = new FSM_1 ( & #39 ATTENTE & #39 , $pile ) $f -> setDefaultTransition ( null, & #39 ATTENTE & #39 )
$f -> addTransition ( & #39 . & #39 , & #39 en ATTENTE & #39 , & #39 SECTION_NAME & #39 , null )
$f -> addTransitionAny ( & #39 SECTION_NAME & #39 , & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 nom de section & #39 )
$f -> addTransition ( & #39 * & #39 , & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 ITEM_SUMMARY & #39 , & #39 ItemTitle & #39 )
$f -> addTransition ( & #39 . & #39 , & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 SECTION_NAME & #39 , null )
$f -> addTransitionAny ( & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 ITEM_TITLE & #39 , & #39 nom de section & #39 )
$f -> addTransitionAny ( & #39 ITEM_SUMMARY & #39 , & #39 ITEM_Ignore & #39 , & #39 ItemSummary & #39 )
$f -> addTransitionAny ( & #39 ITEM_TITLE & #39 , & #39 ITEM_Ignore & #39 , null )
$f -> addTransitionAny ( & #39 ITEM_Ignore & #39 , & #39 ITEM_URL & #39 , null )
$f -> addTransitionAny ( & #39 ITEM_URL & #39 , & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 ItemURL & #39 ) if ( $_POST [ & #39 submitid & #39 ] == 1 ) {
$titres = array ( )
$ignorer = 0
foreach ( explode ( '\n', $_POST [ & #39 de l'information & #39 ] ) as $ligne ) {
$ligne = trim ( $ligne )
if ( $ligne == & #39 & #39 ) { continuer }
$f -> setPayload ( & #39 & #39 )
$f -> process ( substr ( $ligne, 0, 1 ) )
$de la charge utile = $f -> getPayload ( )
if ( $de la charge utile != & #39 & #39 ) {
if ( $de la charge utile == & #39 Section: & #39 $ligne == & #39 OPTIONS ET de l'AIDER & #39 ) { break }
if ( $de la charge utile == & #39 Titre: & #39 ) {
if ( in_array ( $ligne, $titres ) ) { $ignorer = 1 }
else {
$ignorer = 0
array_push ( $titres, $ligne )
}
}
if ( $ignorer == 0 ) {
if ( $de la charge utile == & #39 Titre: & #39 ) { echo stripslashes ( $line ) . '
\n' }
if ( $de la charge utile == & #39 Sommaire: & #39 ) { echo stripslashes ( $line ) . '
\n' }
if ( $de la charge utile == & #39 URL: & #39 ) { echo '' . $ligne . '\n' }
}
}
}
echo '\n' '
}
?>
Voici quelques notes sur la façon dont il fonctionne:
Heureusement, les lignes de la BBC e-mails sont séquencés en particulier de façon simple et cela se reflète dans la collection de règles de transition.
si une règle de transition résulte d'un appel à une fonction comme le nom de section en indiquant que le nom de la section (tels que 'TOP STORIES') a été reconnue, la fonction de signaux de ce fait par la mise en $charge en conséquence. J'ai étendu la classe de base, de sorte que la somme de la charge utile qui est mis à la disposition de ces fonctions est également disponible pour les codes d'instancier la classe étendue.
Le résultat est que chaque fois qu'une ligne est lue à partir du daily mail, il est transmis à l' (extended) FSM pour la reconnaissance et traitées en conséquence.
Un point mineur: Les 'cols' réglage du textarea dans la forme peut sembler trop grand. Il est défini de cette façon, de sorte que les lignes de l'e-mail ne sont pas pliées, de sorte que l'analyse n'est pas faite inutilement compliqué.
Php: le traitement de la bbc courriel quotidien
Php: le traitement de la bbc courriel quotidien : Plusieurs milliers de conseils pour vous faciliter la vie.
Si vous recevez ces BBC quotidiennement des e-mails trop alors vous aurez remarque qu'ils sont assez redondants. Une nouvelle qui apparaît dans le 'TOP STORIES' de la categorie, par exemple, peuvent aussi apparaître dans le 'AFRIQUE' de la categorie. En fait, c' & #39 s n'est pas rare de trouver le meme objet dans deux ou trois categories.
Ici & #39 s un script PHP qui accepte un quotidien BBC news e-mail et les sorties d'une page dans laquelle chaque element d'information est indique juste une fois.
Pour utiliser ce script, il suffit de l'ouvrir dans un navigateur et copier-coller l'integralite de la BBC daily mail dans le formulaire & #39 s zone de texte et appuyez sur le bouton submit.
Ce script utilise la Machine a etats Finis classe qui est disponible a http://pear.php.net/package/FSM/docs/latest/FSM/FSM.html.
fonction de setPayload de dollars (charge utile ) { $this->_payload = $de la charge utile }
fonction de getPayload ( ) { return $this -> _payload }
}function nom de section (symbole$, $de la charge utile ) { $de la charge utile = ':' }
fonction de ItemTitle (symbole$, $de la charge utile ) { $de la charge utile = 'Titre' }
fonction de ItemSummary (symbole$, $de la charge utile ) { $de la charge utile = 'Resume:' }
fonction de ItemURL (symbole$, $de la charge utile ) { $de la charge utile = 'URL:' }$stack = array ( )
$f = new FSM_1 ( & #39 ATTENTE & #39 , $pile ) $f -> setDefaultTransition ( null, & #39 ATTENTE & #39 )
$f -> addTransition ( & #39 . & #39 , & #39 en ATTENTE & #39 , & #39 SECTION_NAME & #39 , null )
$f -> addTransitionAny ( & #39 SECTION_NAME & #39 , & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 nom de section & #39 )
$f -> addTransition ( & #39 * & #39 , & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 ITEM_SUMMARY & #39 , & #39 ItemTitle & #39 )
$f -> addTransition ( & #39 . & #39 , & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 SECTION_NAME & #39 , null )
$f -> addTransitionAny ( & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 ITEM_TITLE & #39 , & #39 nom de section & #39 )
$f -> addTransitionAny ( & #39 ITEM_SUMMARY & #39 , & #39 ITEM_Ignore & #39 , & #39 ItemSummary & #39 )
$f -> addTransitionAny ( & #39 ITEM_TITLE & #39 , & #39 ITEM_Ignore & #39 , null )
$f -> addTransitionAny ( & #39 ITEM_Ignore & #39 , & #39 ITEM_URL & #39 , null )
$f -> addTransitionAny ( & #39 ITEM_URL & #39 , & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 ItemURL & #39 ) if ( $_POST [ & #39 submitid & #39 ] == 1 ) {
$titres = array ( )
$ignorer = 0
foreach ( explode ( '\n', $_POST [ & #39 de l'information & #39 ] ) as $ligne ) {
$ligne = trim ( $ligne )
if ( $ligne == & #39 & #39 ) { continuer }
$f -> setPayload ( & #39 & #39 )
$f -> process ( substr ( $ligne, 0, 1 ) )
$de la charge utile = $f -> getPayload ( )
if ( $de la charge utile != & #39 & #39 ) {
if ( $de la charge utile == & #39 Section: & #39 $ligne == & #39 OPTIONS ET de l'AIDER & #39 ) { break }
if ( $de la charge utile == & #39 Titre: & #39 ) {
if ( in_array ( $ligne, $titres ) ) { $ignorer = 1 }
else {
$ignorer = 0
array_push ( $titres, $ligne )
}
}
if ( $ignorer == 0 ) {
if ( $de la charge utile == & #39 Titre: & #39 ) { echo stripslashes ( $line ) . '
\n' }
if ( $de la charge utile == & #39 Sommaire: & #39 ) { echo stripslashes ( $line ) . '
\n' }
if ( $de la charge utile == & #39 URL: & #39 ) { echo '' . $ligne . '\n' }
}
}
}
echo '\n' '
}
?>
Voici quelques notes sur la façon dont il fonctionne:
Heureusement, les lignes de la BBC e-mails sont sequences en particulier de façon simple et cela se reflete dans la collection de regles de transition.
si une regle de transition resulte d'un appel a une fonction comme le nom de section en indiquant que le nom de la section (tels que 'TOP STORIES') a ete reconnue, la fonction de signaux de ce fait par la mise en $charge en consequence. J'ai etendu la classe de base, de sorte que la somme de la charge utile qui est mis a la disposition de ces fonctions est egalement disponible pour les codes d'instancier la classe etendue.
Le resultat est que chaque fois qu'une ligne est lue a partir du daily mail, il est transmis a l' (extended) FSM pour la reconnaissance et traitees en consequence.
Un point mineur: Les 'cols' reglage du textarea dans la forme peut sembler trop grand. Il est defini de cette façon, de sorte que les lignes de l'e-mail ne sont pas pliees, de sorte que l'analyse n'est pas faite inutilement complique.
Php: le traitement de la bbc courriel quotidien
By commentfaire
Php: le traitement de la bbc courriel quotidien : Plusieurs milliers de conseils pour vous faciliter la vie.