문제

나는 나 자신에게 PHP를 가르치려고 노력하고있다.

나는 따라하려고 노력하고있다 이 튜토리얼 캐시하는 방법에 대해 ... 캐시하려는 페이지는 HTML 전용이므로 데이터 만 다루기 위해 PHP를 수정했습니다. 캐싱 부분이 작동하고 있다는 것을 알고 있습니다. 아래의 str_replace 라인에서 "캐치 가능한 치명적 오류 : 클래스 캐싱의 대상을 문자열로 변환 할 수 없다"는 결과를 수정하려고 할 때입니다.

나는 그것을 사용했다 __TOSTRING 방법, 그리고 나는 사용을 시도했다 직렬화. 내가 놓친 것이 있습니까?

편집 : 아 그리고 나는 심지어 시도했다 캐스팅 연산자.

 $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 ($ 캐싱); 다음과 같다:

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

좋아, 이제 문제는 Caching.php가 값을 $ 캐싱 스트링에 반환하지 않는 것임을 알 수 있습니다. 누구든지 아래 링크를 확인하고 왜 작동하지 않는지 알아낼 수 있습니까? 감사!

방금 전체 Caching.php 파일을 게시했습니다 여기.

도움이 되었습니까?

해결책

링크 된 사이트의 코드는 Artists에게 제공 한 URL에서 페이지를 다운로드하여 캐시 파일에 저장하여 작동합니다. 캐시 오브젝트에는 두 가지 변수 만 포함됩니다. Filepath와 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 코드에서 캐싱 클래스를 연장하는 것입니다.

  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 );
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top