0

我正在尝试自学php...所以请善待我。

我正在尝试按照本教程了解如何缓存文件...我要缓存的页面仅为 HTML,因此我修改了 php 以仅处理数据。我知道缓存部分正在工作,当我尝试修改结果时,我在下面的 str_replace 行中收到“可捕获的致命错误:类缓存的对象无法转换为字符串”。

我在这里尝试过使用 __toString 方法,也尝试过使用serialize。有什么我想念的吗?

编辑:哦,我什至尝试过强制转换操作符

 $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 );

我的 var_dump($caching); 如下:

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

好的,我现在看到问题在于caching.php 没有将值返回给$caching 字符串。任何人都可以查看下面的链接并帮助我弄清楚为什么它不起作用?谢谢!

我刚刚在这里发布了我的整个caching.php 文件。

4

1 回答 1

1

您链接的网站上的代码通过从您提供的 URL 下载页面并为艺术家解析它,然后将它们保存到缓存文件来工作。缓存对象只包含两个变量;文件路径和 apiURI。如果您想修改页面解析和转换为缓存的 XML 文件的方式,您应该更改 stripAndSaveFile 函数。

以下是如何修改 Caching.php 以执行您想要的操作的示例:

  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);  
  }         

编辑:

其他选项是在您的 php 代码中使用您可以执行的类扩展 Caching 类:

  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 );
于 2009-09-16T17:02:31.433 回答