Pregunta

Estoy tratando de enseñarme php ... así que por favor sé amable y ten paciencia conmigo.

Estoy tratando de seguir este tutorial sobre cómo almacenar en caché los archivos ... la página que quiero almacenar en caché es solo HTML, por lo que he modificado el php para tratar solo con datos. Sé que la parte de almacenamiento en caché está funcionando, es cuando trato de modificar los resultados que obtengo un error fatal de captura: el objeto de la clase de almacenamiento en caché no se pudo convertir en cadena. en la línea str_replace a continuación.

He intentado usar el __ toString método aquí , y he intentado usar serializar . ¿Hay algo que me falta?

Editar: Ah, e incluso he intentado operadores de casting .

 $caching = new Caching( "my.htm", "http://www.page-I-want.com/" );
 $info = new TestClass($caching);
 $info = str_replace( "<img src='/images/up.jpg'>","<div class='up'></div>", $info );

Mi var_dump ($ caché); es el siguiente:

object(Caching)#1 (2) { ["filePath"]=>  string(9) "cache.htm" ["apiURI"]=>  string(27) "http://www.page-I-want.com/" } 

Ok, ahora veo que el problema es que caching.php no devuelve el valor a la cadena $ caching. ¿Alguien puede consultar el siguiente enlace y ayudarme a descubrir por qué no funciona? Gracias!

Acabo de publicar mi archivo caching.php completo aquí .

¿Fue útil?

Solución

El código en el sitio que vincula funciona descargando la página de la URL que proporciona y analiza para los artistas y luego los guarda en el archivo de caché. El objeto caché solo contiene dos variables; filePath y apiURI. Si desea modificar cómo se analiza y convierte la página en el archivo XML en caché, debe cambiar la función stripAndSaveFile.

Aquí hay un ejemplo de cómo modificar el Caching.php para hacer lo que desea:

  function stripAndSaveFile($html) {
        //mange the html code in any way you want
        $modified_html = str_replace( "<img src='/images/up.jpg'>","<div class='up'></div>", $html );
        //save the xml in the cache
        file_put_contents($this->filePath, $modified_html);  
  }         

Editar:

Otra opción es extender la clase Caching, en su código php usando la clase que podría hacer:

  class SpecialCaching extends Caching {
        var $html = "";
        function stripAndSaveFile($html) {
              //mange the html code in any way you want
              $this->html = $html;
        }
  }

  $caching = new SpecialCaching( "my.htm", "http://www.page-I-want.com/" );
  $info = $caching->html;
  $info = str_replace( "<img src='/images/up.jpg'>","<div class='up'></div>", $info );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top