/ / Reemplazar dinámicamente el contenido de los elementos HTML usando PHP - php, xml-parsing, screen-scraping

Reemplace dinámicamente el contenido de los elementos HTML usando PHP - php, xml-parsing, screen-scraping

Actualmente necesito una forma de tomar ciertos elementos de un sitio diferente y reemplazar su contenido con mi propio contenido utilizando PHP.

Si un sitio web tiene una página que contiene la siguiente tabla y div

    <div>Div Contents!</div>

<table>
<tr>
<td>Table Column 1</td>
<td>Table Column 2</td>
</tr>
</table>

Necesito poder obtener esta información y reemplazar "Div Contents", "Table Column 1" y "Table Column 2" con mis propios datos.

Cuál sería la mejor forma de hacer esto? Expresiones regulares o strpos / str_replace / substr etc.

Agradezco cualquier ayuda y ejemplos que proporcione.

Respuestas

1 para la respuesta № 1

Use cURL para tomar el contenido HTML de una fuente remota, use regex (preg_match()) o una serie de operaciones de cadena para extraer los datos que desea, generar sus datos en el formato deseado de la variable asignada durante el análisis.

Idealmente, las expresiones regulares serán mucho más rápidas de construir y probar, pero el combo strpos / substr también puede hacer el truco.

* He creado programas de minería de datos antes


0 para la respuesta № 2
  1. Obtener el HTML de la otra página con rizo
  2. Analizar y modificar - Ver esta pregunta. Lo más probable es que quieras usar una biblioteca nativa de PHP como XMLReader o DOM.
  3. Mostrar HTML resultante

0 para la respuesta № 3
// read URL into dom document
$doc = domxml_open_file("http://domain.com/test.php");
// replace content of div
$els = $doc->getElementsByTagName("div");
$els[0]->set_content("new content");
// replace content of tds
$els = $doc->getElementsByTagName("td");
$els[0]->set_content("new content");
$els[1]->set_content("new content");
// echo the final output
echo $doc->saveXML();

Notas

  • El código anterior debería funcionar con las URL directamente, sin tener que usar CURL.
  • Utilicé un enfoque directo para cambiar los valores (asumí que la estructura que mencionaste es verdadera). Deberías usar un bucle en su lugar.