¿Qué significa eso? Datos de referencia sobre funciones hiperbólicas: propiedades, gráficas, fórmulas. No cambiar: continuará

Aprenderá cómo obtener una lista de todos los artículos publicados en un sitio.

Paso 1. Preparación

Primero que nada necesitas copiar la biblioteca. simpleHTMLdom, que está disponible en el sitio web

El archivo de descarga contiene varios archivos, pero solo necesitas uno simple_html_dom.php. Todos los demás archivos son ejemplos y documentación.

Paso 2: conceptos básicos de análisis

Esta biblioteca es muy fácil de usar, pero hay algunas cosas básicas que debes aprender antes de ponerla a funcionar.

$html = nuevo simple_html_dom();
// Carga desde cadena
$html->cargar("

¡Hola Mundo!

");
// Subir archivo
$html->load_file("http://net.tutsplus.com/");

puedes crear objeto fuente descargando HTML ya sea desde una cadena o desde un archivo. La carga desde un archivo se puede realizar especificando URL, o desde su sistema de archivos local.

Notas: Método cargar archivo() los delegados trabajan Funciones PHP archivo_get_contents. Si permitir_url_fopen no establecido en valor verdadero en tu archivo php.ini, entonces es posible que no puedas abrir archivos eliminados De este modo. En este caso, puede volver a utilizar la biblioteca CURL para cargar paginas eliminadas y luego leer usando el método carga().

Acceso a la información

Una vez que tenga un objeto DOM, puede comenzar a trabajar con él usando el método encontrar() y creación de colecciones. Una colección es un grupo de objetos encontrados por un selector. La sintaxis es muy similar a jQuery.



¡Hola Mundo!


Estaban aquí.






En esto ejemplo HTML Descubriremos cómo acceder a la información en el segundo párrafo, cambiarla y luego imprimir el resultado de las acciones.

1. # crear y cargar HTML
2. incluir("simple_html_dom.php");
3. $html = nuevo simple_html_dom();
4. $html->cargar(“

¡Hola Mundo!



“);
5. # obtenemos el elemento que representa el segundo párrafo
6. $elemento = $html->buscar(“p“);
7. # modificarlo
8. $elemento->innertext .= “y estamos aquí para quedarnos”.
9. # ¡Salida!
10. eco $html->save();

Líneas 2-4: cargue HTML desde una cadena como se explicó anteriormente.

Línea 6: Encuentra todas las etiquetas

En HTML y devolverlos a una matriz. El primer párrafo tendrá índice 0 y los párrafos siguientes se indexarán en consecuencia.

Línea 8: Accedemos al segundo elemento de nuestra colección de párrafos (índice 1), agregando texto a su atributo de texto interno. El atributo de texto interno representa el contenido entre las etiquetas y el atributo de texto externo representa el contenido que incluye las etiquetas. Podemos reemplazar la etiqueta por completo usando el atributo de texto externo.

Ahora agreguemos una línea y modifiquemos la clase de etiqueta de nuestro segundo párrafo.

$elemento->clase = "nombre_clase";
eco $html->guardar();

El HTML final después del comando guardar se verá así:



¡Hola Mundo!


Estamos aquí y estamos aquí para quedarnos.





Otros selectores

Algunos otros ejemplos de selectores. Si has usado jQuery, todo te resultará familiar.

# obtener el primer elemento encontrado con id="foo"
$único = $html->find("#foo", 0);
# obtener todos los elementos con la clase "foo"
$colección = $html->find(".foo");
# obtener todas las etiquetas de enlaces en la página
$colección = $html->find("a");
# obtener todas las etiquetas de enlace que se encuentran dentro de la etiqueta H1
$colección = $html->find("h1 a");
# consigue todo etiquetas img con título="himom"!}
$colección = $html->find("img");

El primer ejemplo requiere alguna explicación. Todas las consultas devuelven colecciones de forma predeterminada, incluso la consulta de ID, que solo debería devolver un elemento. Sin embargo, al especificar el segundo parámetro, decimos "devolver solo el primer elemento de la colección".

Esto significa que $soltero- un solo elemento, y no una matriz de elementos con un miembro.

Los ejemplos restantes son bastante obvios.

Documentación

La documentación completa de la biblioteca está disponible en .

Paso 3: ejemplo del mundo real

Para demostrar la biblioteca en acción, escribiremos un script para extraer el contenido del sitio net.tutsplus.com y generar una lista de títulos y descripciones de los artículos presentados en el sitio... solo como ejemplo. El scraping es un truco web y no debe utilizarse sin el permiso del propietario del recurso.

Incluir("simple_html_dom.php");
$artículos = matriz();
getArticles("http://net.tutsplus.com/page/76/");

Comencemos conectando la biblioteca y llamando a la función. obtener artículos indicando la página desde la que queremos comenzar a analizar.

También declararemos una matriz global para hacer colección más fácil toda la información sobre artículos en un solo lugar. Antes de comenzar a analizar, echemos un vistazo a cómo se describe el artículo en el sitio web de Nettuts+.



...


Título




Descripción



Este es el formato básico de una publicación en el sitio, incluidos los comentarios. código fuente. ¿Por qué son importantes los comentarios? El analizador los cuenta como nodos.

Paso 4: inicie la función de análisis

función obtenerArtículos($página) (
$artículos globales;
$html = nuevo simple_html_dom();
$html->load_file($página);
// ... Más...
}

Comenzamos declarando una matriz global, creando un nuevo objeto. simple_html_dom y luego cargue la página para analizarla. Esta función será llamado recursivamente, por lo que lo configuramos como parámetro de URL páginas.

Paso 5. Encuentra la información que necesitamos

1. $elementos = $html->find("div");
2. foreach($elementos como $publicación) (
3. # recuerda contar los comentarios como nodos
4. $artículos = matriz($post->niños(3)->texto exterior,
5. $post->children(6)->first_child()->outertext);
6. }

Esta es la esencia de la función. obtener artículos. Necesitamos analizarlo con más detalle para entender lo que está sucediendo.

Línea 1: Crea una matriz de elementos - etiqueta div con la clase de vista previa. Ahora tenemos una colección de artículos guardados en $artículos.

Línea 4: $ publicación ahora se refiere a soltero división de clase avance Si miramos el HTML original, podemos ver que el tercer elemento descendiente es una etiqueta. H1, que contiene el título del artículo. Lo tomamos y nos lo apropiamos. $artículos.

Recuerde comenzar en 0 y tener en cuenta los comentarios del código fuente al determinar el índice de nodo correcto.

Línea 5: Sexto descendiente $ publicación- Este

. Necesitamos el texto de descripción del mismo, así que usamos texto externo- la etiqueta de párrafo se incluirá en la descripción. Una sola entrada en la matriz de artículos se verá así:

$artículos = “Título del artículo”;
$artículos = “Esta es la descripción de mi artículo“

Paso 6, trabajar con páginas

El primer paso es determinar cómo encontrar la página siguiente. En el sitio Nettuts+ es muy fácil adivinar el número de página a partir de la URL, pero necesitamos obtener el enlace al analizarlo.

Si observa el HTML, encontrará lo siguiente:

»

Este es un enlace a la página siguiente y podemos encontrarlo fácilmente por clase ' nextpostsenlace'. Ahora esta información se puede utilizar.

Si($siguiente = $html->buscar("a", 0)) (
$URL = $siguiente->href;
$html->claro();
desarmado($html);
obtenerArtículos($URL);
}

En la primera línea comprobamos si podemos encontrar una referencia con la clase. nextpostsenlace. Tenga en cuenta el uso del segundo parámetro en la función. encontrar(). De esta forma indicamos que queremos obtener el primer elemento (índice 0) de la colección devuelta. $siguiente contiene un solo elemento, no una colección.

Luego asignamos Enlace HREF variable $URL. Esto es importante porque a continuación eliminamos Objeto HTML. Para evitar pérdidas de memoria en php5, el objeto actual simple_html_dom debe borrarse y desarmarse antes de poder crear otro objeto. Si esto no se hace, entonces todos memoria disponible puede ser absorbido.

Finalmente, llamamos a la función getArticles con la URL siguiente página. La recursividad se interrumpe cuando no quedan páginas para analizar.

Paso 7. Generar los resultados

Primero, vamos a instalar algunos estilos básicos. Todo es completamente arbitrario: puedes instalar lo que quieras.

#principal (
margen: 80px automático;
ancho: 500 px;
}
h1 (
fuente: negrita 40px/38px helvética, verdana, sans-serif;
margen:0;
}
h1 un (
color:#600;
decoración de texto: ninguna;
}
pag(
antecedentes: #ECECEC;
fuente: 10px/14px verde, sans-serif;
margen:8px 0 15px;
borde: 1px #CCC sólido;
relleno: 15px;
}
.artículo(
relleno: 10px;
}

Luego escribimos una pequeña función PHP en la página para mostrar la información previamente guardada.

foreach($artículos como $artículo) (
eco "

";
eco $elemento;
eco $elemento;
eco "
";
}
?>

El resultado final es una única página HTML que enumera todos los artículos de las páginas de Nettuts+, empezando por el especificado en la primera convocatoria. obtener artículos().

Paso 8. Conclusión

Si comienzas a analizar gran cantidad páginas (por ejemplo, todo el sitio), esto puede llevar mucho tiempo. En un sitio como Nettuts+, que tiene más de 86 páginas, el proceso de análisis puede tardar más de un minuto.

Esta lección te abre el tema. análisis HTML. Existen otras técnicas de manipulación de DOM que le permiten trabajar con el selector xpath para buscar elementos. Descrito en Esta lección La biblioteca es fácil de usar y excelente para Inicio rápido. Recuerde pedir permiso antes de raspar un sitio.



Básicamente, los métodos se utilizan para pasar parámetros. CORREO Y CONSEGUIR.
La principal diferencia entre los métodos. CORREO Y CONSEGUIR radica en el método de transmisión de información. en método CONSEGUIR Los parámetros se pasan a través de la barra de direcciones ( URL), es decir. V HTTP-solicitar encabezado, mientras está en el método CORREO Los parámetros se transmiten a través del cuerpo. HTTP-solicitud y no se reflejan de ninguna manera en Barra de dirección.

1. Botones – Etiqueta

Etiqueta requerido.
Opciones:
desactivado– bloquea el acceso y la modificación de un elemento.
tipo– tipo de botón
valor– El valor del botón que se enviará al servidor o se leerá mediante sprips.


Parámetro DESACTIVADO
Bloquea el acceso y modificación del botón. En este caso, se muestra en gris y el usuario no puede activarlo. Además, dicho botón no puede recibir enfoque presionando la tecla Pestaña, mouse u otro método. Sin embargo, el estado de este botón se puede cambiar mediante scripts.

Parámetro TIPO
Define el tipo de botón, que establece su comportamiento en el formulario. Por apariencia botones diferentes tipos no difieren en nada, pero cada uno de estos botones tiene sus propias funciones. Valor por defecto: botón.
Argumentos:
botónBotón normal.
reiniciar– Un botón para borrar los datos del formulario ingresados ​​y devolver los valores a su estado original.

Enviar: botón para enviar datos del formulario al servidor.

Parámetro VALOR Define el valor del botón que se enviará al servidor. Un par de " nombre=valor", donde el nombre lo especifica el parámetro nombre de etiqueta

1.1. Botón (tipo de entrada=botón)
1.2. Botón con una imagen (tipo de entrada=imagen)

Los botones con imágenes son similares en acción a un botón. Entregar, pero representan un dibujo. Para ello configuramos tipo=imagen Y src="imagen.gif".

Cuando el usuario hace clic en cualquier parte de la imagen, el formulario correspondiente se enviará al servidor con dos variables adicionales: sub_x Y sub_y. Contienen las coordenadas del usuario que hace clic en la imagen. Programadores experimentados Puede notar que los nombres de las variables enviadas por el navegador en realidad contienen un punto en lugar de un guión bajo, pero PHP convierte automáticamente el punto en un guión bajo.

1.3. Botón de envío de formulario (tipo de entrada=enviar)

Sirve para enviar el formulario al script. Al crear un botón para enviar un formulario, debe especificar 2 atributos: tipo="enviar" Y valor="Texto del botón" !}. atributo de nombre necesario si no hay un botón, sino varios y todos ellos están creados para diferentes operaciones, por ejemplo, los botones "Guardar", "Eliminar", "Editar", etc. Después de hacer clic en el botón, al script se le pasa la cadena nombre=texto del botón.


No se requiere script PHP.

1.4. Una serie de botones (enviar) para seleccionar una opción de acción
2. Botón de reinicio

Cuando presiona el botón de reinicio ( reiniciar), todos los elementos del formulario se establecerán en el estado especificado en los atributos predeterminados y el formulario no se enviará.


No se requiere script PHP.

3. Casilla de verificación

Las casillas de verificación presentan al usuario una serie de opciones y permiten una selección arbitraria (ninguna, una o más de ellas).

Blanco
Verde
Azul
Rojo
Negro
$ir) ( echo $index." - > ".$ir."
"; }; };

4. Cambiar (radio)

Los interruptores de radio ofrecen al usuario una serie de opciones, pero solo permiten seleccionar una.
Ejemplo 1.

Blanco
Verde
Azul
Rojo
Negro

Ejemplo 2.
// primer conjunto de botones
// segundo conjunto de botones
// tercer conjunto de botones
\n"; ?>

5. Campo de texto (texto)

Al crear un regular campo de texto tamaño tamaño y longitud máxima permitida longitud máxima caracteres, atributo de tipo adquiere el valor texto. Si se especifica el parámetro valor, entonces el campo mostrará el valor especificado en la variable. Al crear un campo, no olvide especificar el nombre del campo, porque... este atributo es obligatorio.

6. Campo de contraseña

Exactamente igual que un campo de texto, excepto que los caracteres escritos por el usuario no se mostrarán en la pantalla.

7. Campo de texto oculto (oculto)

Le permite pasar cierta información de servicio al script sin mostrarla en la página.

8. Lista desplegable (seleccionar)

Etiqueta . Etiquetas le permite determinar el contenido de la lista y el parámetro valor define el valor de la cadena. Si en una etiqueta parámetro especificado seleccionado, entonces la fila se seleccionará inicialmente. El parámetro de tamaño especifica cuántas líneas ocupará la lista. Si tamaño es igual 1 , entonces la lista será desplegable. Si se especifica el atributo múltiple, entonces podrá seleccionar varios elementos de la lista. Pero este esquema prácticamente no se utiliza, y cuando tamaño = 1 no tiene sentido.

Si necesita crear un menú desplegable con una secuencia predecible. Por ejemplo, una lista con años del 2000 al 2050. Luego se utiliza la siguiente técnica.

9. Campo de entrada de texto de varias líneas (área de texto)

Un campo de entrada de texto de varias líneas le permite enviar no solo una línea, sino varias a la vez. Si es necesario, puede especificar el atributo. solo lectura, que prohíbe editar, eliminar y cambiar texto, es decir. el texto será de sólo lectura. Si es necesario que el texto se muestre inicialmente en un campo de entrada de varias líneas, entonces debe colocarse entre las etiquetas. .
Hay un parámetro envoltura– tarea de saltos de línea. Valores posibles:
apagado– desactiva el ajuste de línea;
virtuales– muestra saltos de línea, pero envía el texto tal como fue ingresado;
físico– los saltos de línea se dejan en su forma original.
Etiqueta predeterminada

Para que un campo de texto de varias líneas cumpla con el formato html (ajuste de línea usando la etiqueta
o
), luego use la función nl2br():

10. Botón para subir archivos (examinar)

Sirve para implementar la carga de archivos al servidor. Al crear un campo de texto, también debe especificar el tipo de campo. tipo Cómo "archivo".

Subir archivo:

Formas en que el navegador se comunica con el servidor

Métodos proporcionados por el protocolo. HTTP, Un poco. Este información importante. No hay otras maneras. En la práctica se utilizan dos:
CONSEGUIR- Esto ocurre cuando se transfieren datos en la barra de direcciones, por ejemplo, cuando el usuario hace clic en un enlace.
CORREO– cuando presiona un botón en el formulario.

OBTENER método

Para pasar datos usando el método CONSEGUIR no es necesario crear un formulario en la página HTML (use formularios para solicitudes utilizando el CONSEGUIR nadie te detiene): solo un enlace al documento con la adición de una cadena de consulta, que puede verse como variable=valor. Los pares se concatenan usando el signo & y la cadena se agrega a la URL de la página usando un signo de interrogación " ? ».
Pero no es necesario utilizar pares clave=valor si necesita pasar solo una variable; para hacerlo, debe escribir el VALOR (no el nombre) de la variable después del signo de interrogación.
Ventaja pasar parámetros de esta manera es que los clientes que no pueden usar el método CORREO(Por ejemplo, los motores de búsqueda), aún podrán simplemente seguir el enlace, pasar parámetros al script y recibir el contenido.
Defecto es que simplemente cambiando los parámetros en la barra de direcciones, el usuario puede cambiar el script de forma impredecible y esto crea un enorme agujero de seguridad, combinado con variables indefinidas y registrarse_globals en o alguien puede averiguar el valor de una variable importante (por ejemplo IDENTIFICACIÓN-sessions), con sólo mirar la pantalla del monitor.
:
- para acceder a páginas públicas con parámetros de paso (funcionalidad aumentada)
- transferencia de información que no afecta el nivel de seguridad
:
- para acceder a páginas protegidas con transferencia de parámetros
- transmitir información que afecte al nivel de seguridad
- transmitir información que el usuario no puede modificar (algunos transmiten el texto de consultas SQL).

método POST

Pasar datos usando el método CORREO Esto sólo es posible utilizando un formulario en una página HTML. Diferencia principal CORREO de CONSEGUIR El problema es que los datos no se transmiten en el encabezado de la solicitud sino en el cuerpo, por lo tanto el usuario no los ve. Sólo puedes modificarlo cambiando el formulario en sí.
Ventaja:
- mayor seguridad y funcionalidad de consulta mediante formularios método POST.
Defecto:
- menos disponibilidad.
¿Para qué deberías usarlo?:
- para transmitir una gran cantidad de información (texto, archivos...);
- transmitir cualquier información importante;
- restringir el acceso (por ejemplo, utilizar sólo el formulario de navegación, opción que no está disponible para todos los programas robóticos o capturadores de contenidos).
Para qué no se debe utilizar:

PHP es capaz de aceptar un archivo descargado usando cualquier navegador. Esto hace posible descargar tanto texto como archivos binarios. Junto con la autenticación PHP y funciones para trabajar con sistema de archivos, Te estás poniendo control total sobre quién puede cargar archivos y qué hacer con el archivo una vez cargado.
Se puede implementar una página de carga de archivos usando forma especial, que se parece a esto:

//Formulario para subir archivos

Envía este archivo:

En el ejemplo anterior "URL" debe reemplazarse con un enlace a un script PHP. Campo escondido TAMAÑO MÁXIMO DE ARCHIVO(el valor debe especificarse en bytes) debe preceder al campo de selección de archivo y su valor es el máximo tamaño permitido archivo recibido. También debes asegurarte de que en el formulario los atributos que especifiques enctype="multipart/form-data"; de lo contrario, los archivos no se cargarán en el servidor.
Atención
Opción TAMAÑO MÁXIMO DE ARCHIVO es una recomendación del navegador, incluso si PHP también verificara esta condición. Evitar esta limitación del navegador es bastante fácil, por lo que no debes confiar en todos los archivos. tamaño más grande será bloqueado usando esta característica. Sin embargo, Limitación de PHP acerca de talla máxima imposible moverse. Deberías agregar la variable de formulario de todos modos. TAMAÑO MÁXIMO DE ARCHIVO, ya que evita que los usuarios esperen ansiosamente mientras transfieren archivos grandes, sólo para descubrir que el archivo es demasiado grande y la transferencia realmente falló.

¿Cómo definir un método de solicitud?

Directamente:

Getenv("REQUEST_METHOD");

regresará CONSEGUIR o CORREO.

¿Qué método se debe utilizar?

Si el formulario se utiliza para solicitar alguna información, por ejemplo, durante una búsqueda, entonces se debe enviar utilizando el método CONSEGUIR. Para mantener la página actualizada, puede marcarla como favorita y/o enviar el enlace a un amigo.
Si, como resultado del envío de un formulario, se escriben o modifican datos en el servidor, entonces se deben enviar utilizando el CORREO, y es imperativo, después de procesar el formulario, redirigir el navegador utilizando el método CONSEGUIR. También, CORREO puede ser necesario si necesita realizar una transferencia al servidor gran volumen datos (de CONSEGUIR es muy limitado), así como si los datos transmitidos no deben "mostrar" en la barra de direcciones (al ingresar un nombre de usuario y contraseña, por ejemplo).
En cualquier caso, después del procesamiento CORREO Siempre se debe redirigir el navegador a alguna página, incluso a la misma, pero sin los datos del formulario, para que cuando se actualice la página no se vuelvan a registrar.

Cómo pasar datos a otro archivo directamente desde el cuerpo de un programa PHP OBTENER método y PUBLICAR?

Un ejemplo para demostrar el envío de datos utilizando los métodos POST y GET simultáneamente y recibiendo una respuesta del servidor.

etiqueta de cierre

No requerido.

Atributos

Ejemplo

T.H.

Navegador explorador de Internet Ópera Firefox
Versión 5.5 6.0 7.0 7.0 8.0 9.0 1.0 2.0
Soportado


Resultado este ejemplo mostrado en la Fig. 1.

Arroz. 1. Vista de celdas decoradas con estilos.

Especificación

Cada especificación pasa por varias etapas de aprobación.

  • Recomendación: la especificación ha sido aprobada por el W3C y se recomienda como estándar.
  • Recomendación del candidato ( Posible recomendación ) - el grupo responsable del estándar está satisfecho de que cumple sus objetivos, pero requiere ayuda de la comunidad de desarrollo para implementar el estándar.
  • Recomendación propuesta Recomendación sugerida) - en esta etapa el documento se envía al Consejo Asesor del W3C para su aprobación final.
  • Borrador de trabajo: una versión más madura de un borrador que ha sido discutido y modificado para revisión de la comunidad.
  • Borrador del editor ( Borrador editorial) - una versión borrador del estándar después de que los editores del proyecto realizaron cambios.
  • Borrador ( Borrador de especificación) - el primer borrador de la norma.

Destaca el estándar HTML vivo (Living): no se adhiere a la numeración de versiones tradicional, ya que está en constante desarrollo y se actualiza periódicamente.




Arriba