Php: el tratamiento de la bbc diario correo electrónico


Si usted recibe estos de la BBC correos electrónicos diarios demasiado, a continuación, se han dado cuenta de que son bastante redundante. Una noticia que aparece en el 'TOP STORIES' de la categoría, por ejemplo, también pueden aparecer en el 'ÁFRICA' de la categoría. De hecho & #39 s no es raro encontrar el mismo elemento en dos o tres categorías.
Aquí & #39 s un script de PHP que acepta un diario de noticias de la BBC de correo electrónico y salidas de una página en la que cada noticia aparece sólo una vez.

Para usar este script solo abrirlo en un navegador y copiar y pegar todo un BBC diario correo electrónico en el formulario & #39 s área de texto y pulse el botón enviar.

Este script utiliza la Máquina de estados Finitos de la clase que está disponible en http://pear.php.net/package/FSM/docs/latest/FSM/FSM.html.


función setPayload ( $payload ) { $this->_payload = $payload }
función getPayload ( ) { return $this -> _payload }
}function SectionName (símbolo$, $payload ) { $payload = 'Sección:' }
función ItemTitle (símbolo$, $payload ) { $payload = 'Título:' }
función ItemSummary (símbolo$, $payload ) { $payload = 'Resumen:' }
función ItemURL (símbolo$, $payload ) { $payload = 'URL:' }$pila = array ( )
$f = new FSM_1 ( & #39 en ESPERA & #39 , $pila ) $f -> setDefaultTransition ( null, & #39 en ESPERA & #39 )
$f -> addTransition ( & #39 . & #39 , & #39 ESPERA & #39 , & #39 NOMBREDESECCIÓN & #39 , null )
$f -> addTransitionAny ( & #39 NOMBREDESECCIÓN & #39 , & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 SectionName & #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 NOMBREDESECCIÓN & #39 , null )
$f -> addTransitionAny ( & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 ITEM_TITLE & #39 , & #39 SectionName & #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 ) {
$títulos = array ( )
$ignore = 0
foreach ( explode ( '/n', $_POST [ & #39 noticias & #39 ] ) as $linea ) {
$line = trim ( $line )
if ( $line == & #39 & #39 ) { continuar }
$f -> setPayload ( & #39 & #39 )
$f -> proceso ( substr ( $linea, 0, 1 ) )
$payload = $f -> getPayload ( )
if ( $payload != & #39 & #39 ) {
if ( $payload == & #39 Sección: & #39 y $line == & #39 OPCIONES Y AYUDA & #39 ) { break }
if ( $payload == & #39 Título: & #39 ) {
if ( in_array ( $linea, $títulos ) ) { $ignore = 1 }
else {
$ignore = 0
array_push ( $títulos, $line )
}
}
if ( $ignore == 0 ) {
if ( $payload == & #39 Título: & #39 ) { echo stripslashes ( $line ) . '
/n' }
if ( $payload == & #39 Resumen: & #39 ) { echo stripslashes ( $line ) . '
/n' }
if ( $payload == & #39 URL: & #39 ) { echo '' . $línea . '

/n' }
}
}
}
echo '

/n'
}
?>






Aquí hay algunas notas acerca de cómo funciona:

Afortunadamente, las líneas en la BBC correos electrónicos son secuenciados en una particular forma simple y esto se refleja en la colección de reglas de transición.
Cuando una regla de transición resultados en una llamada a una función como SectionName, lo que indica que un nombre de sección (tales como 'TOP STORIES') ha sido reconocida, la función de las señales de este hecho mediante la configuración de $payload en consecuencia. Me han extendido la clase base para que los dólares de la carga útil disponible para estas funciones también está disponible para los códigos que crear una instancia de la clase extendida.
El resultado es que cada vez que se lee una línea desde el correo electrónico a diario se pasa a la (extended) de la FSM para el reconocimiento y luego se procesa en consecuencia.
Un punto menor: El 'cols' configuración de la caja de texto en el formulario, puede parecer excesivamente grandes. Se establece de esta manera para que las líneas del correo electrónico no están doblados, de manera que el análisis no es innecesariamente complicado.









Php: el tratamiento de la bbc diario correo electronico


Php: el tratamiento de la bbc diario correo electronico : Multi-millones de consejos para hacer su vida mas facil.


Si usted recibe estos de la BBC correos electronicos diarios demasiado, a continuacion, se han dado cuenta de que son bastante redundante. Una noticia que aparece en el 'TOP STORIES' de la categoria, por ejemplo, tambien pueden aparecer en el 'AFRICA' de la categoria. De hecho & #39 s no es raro encontrar el mismo elemento en dos o tres categorias.
Aqui & #39 s un script de PHP que acepta un diario de noticias de la BBC de correo electronico y salidas de una pagina en la que cada noticia aparece solo una vez.

Para usar este script solo abrirlo en un navegador y copiar y pegar todo un BBC diario correo electronico en el formulario & #39 s area de texto y pulse el boton enviar.

Este script utiliza la Maquina de estados Finitos de la clase que esta disponible en http://pear.php.net/package/FSM/docs/latest/FSM/FSM.html.


funcion setPayload ( $payload ) { $this->_payload = $payload }
funcion getPayload ( ) { return $this -> _payload }
}function SectionName (simbolo$, $payload ) { $payload = 'Seccion:' }
funcion ItemTitle (simbolo$, $payload ) { $payload = 'Titulo:' }
funcion ItemSummary (simbolo$, $payload ) { $payload = 'Resumen:' }
funcion ItemURL (simbolo$, $payload ) { $payload = 'URL:' }$pila = array ( )
$f = new FSM_1 ( & #39 en ESPERA & #39 , $pila ) $f -> setDefaultTransition ( null, & #39 en ESPERA & #39 )
$f -> addTransition ( & #39 . & #39 , & #39 ESPERA & #39 , & #39 NOMBREDESECCION & #39 , null )
$f -> addTransitionAny ( & #39 NOMBREDESECCION & #39 , & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 SectionName & #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 NOMBREDESECCION & #39 , null )
$f -> addTransitionAny ( & #39 DELIM_OR_ITEM_TITLE & #39 , & #39 ITEM_TITLE & #39 , & #39 SectionName & #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 ) {
$titulos = array ( )
$ignore = 0
foreach ( explode ( '/n', $_POST [ & #39 noticias & #39 ] ) as $linea ) {
$line = trim ( $line )
if ( $line == & #39 & #39 ) { continuar }
$f -> setPayload ( & #39 & #39 )
$f -> proceso ( substr ( $linea, 0, 1 ) )
$payload = $f -> getPayload ( )
if ( $payload != & #39 & #39 ) {
if ( $payload == & #39 Seccion: & #39 y $line == & #39 OPCIONES Y AYUDA & #39 ) { break }
if ( $payload == & #39 Titulo: & #39 ) {
if ( in_array ( $linea, $titulos ) ) { $ignore = 1 }
else {
$ignore = 0
array_push ( $titulos, $line )
}
}
if ( $ignore == 0 ) {
if ( $payload == & #39 Titulo: & #39 ) { echo stripslashes ( $line ) . '
/n' }
if ( $payload == & #39 Resumen: & #39 ) { echo stripslashes ( $line ) . '
/n' }
if ( $payload == & #39 URL: & #39 ) { echo '' . $linea . '

/n' }
}
}
}
echo '

/n'
}
?>






Aqui hay algunas notas acerca de como funciona:

Afortunadamente, las lineas en la BBC correos electronicos son secuenciados en una particular forma simple y esto se refleja en la coleccion de reglas de transicion.
Cuando una regla de transicion resultados en una llamada a una funcion como SectionName, lo que indica que un nombre de seccion (tales como 'TOP STORIES') ha sido reconocida, la funcion de las señales de este hecho mediante la configuracion de $payload en consecuencia. Me han extendido la clase base para que los dolares de la carga util disponible para estas funciones tambien esta disponible para los codigos que crear una instancia de la clase extendida.
El resultado es que cada vez que se lee una linea desde el correo electronico a diario se pasa a la (extended) de la FSM para el reconocimiento y luego se procesa en consecuencia.
Un punto menor: El 'cols' configuracion de la caja de texto en el formulario, puede parecer excesivamente grandes. Se establece de esta manera para que las lineas del correo electronico no estan doblados, de manera que el analisis no es innecesariamente complicado.


Php: el tratamiento de la bbc diario correo electrónico

Php: el tratamiento de la bbc diario correo electrónico : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación