29720


目標は、既に作ってある`php`ファイルにおいてタグの内容を差し替えるという事です。  
インタネットに見つけた例通り作ったのに、元のファイルには変化がありません。

[code]

    $doc = phpQuery::newDocumentFile("../".$filename); // こちらは問題なし、私の場合ファイルの名前はtest.phpです。
    $title = $doc['title']; // 問題ありません、echo $title->text();は正常に表示してくれます
    $title->text("content"); // 効果ありません
    $doc->find('#test')->append('some content'); // 効果ありません
    
[/code]

最後の行はIDだけ取り替えて[こちら](http://codingexplained.com/coding/php/manipulating-dom-
documents-with-phpquery)の例通りにしました。  
コードを掲載致します。

**index.php**

[code]

    <?php 
        require 'phpQuery0.9.5.php'; 
    ?>
    
    <!DOCTYPE html>
    <html>
    <head>
        <title>phpQuery代入試験</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    
    <body>
    
    <?php 
    
        $filename = 'test.php'; 
        echo "ファイル名:".$filename."<br />";
    
        $doc = phpQuery::newDocumentFile($filename);
        echo "ドキュメント内容: <br />".$doc."<hr />";
    
        $title = $doc['title'];
        echo "ページ見出し: ".$title->text()."<br />";
    
        $new_title = "成功";
        echo $new_title."に取り替えます";
    
        // 方法１
        $title->text($new_title);
    
        // 方法２
        $title = $doc->find('title');
        $title->text($new_title);   
    ?>
    
    </body>
    </html>
    
[/code]

**test.php**

[code]

    <!DOCTYPE html>
    <html>
    <head>
        <title>こちらを差し替えましょう</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    
    <body>
        <div id="test"> こちらを差し替えましょう </div>
    
    </body>
    </html>
    
[/code]


CC BY-SA 3.0
2016-10-19T12:52:20.750
29708
2016-10-20T01:14:12.033
2016-10-19T23:54:57.450
16876
16876
question
php html
phpQuery: タグの内容を変更できません


質問の意味がイマイチ理解できないのですがどういうことでしょう。元ファイルが変わらない、という意味ですか？

上記のコードを要点だけ抜き出して実行してみたところ問題はなさそうですが……

[code]

    <?php
        require __DIR__.'/phpQuery-onefile.php';
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <title>phpQuery代入試験</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    
    <body>
    
    <?php
    
        $filename = 'test.php';
        echo "ファイル名:".$filename."<br />";
    
        $doc = phpQuery::newDocumentFile($filename);
    
        $doc['title']->text('content');
        $doc->find('#test')->append('some content'); // 効果ありません
    ?>
    <xmp><?= $doc ?></xmp>
    </body>
    </html>
    
[/code]

result:

[code]

    ファイル名:test.php
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>content</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div id="test"> こちらを差し替えましょう some content</div>
    
    </body>
    </html>
    
[/code]

* * *

ファイルに書き込むならこれで可能ですね。

[code]

    <?php
        require __DIR__.'/phpQuery-onefile.php';
    
        $filename = 'test.php';
        $doc = phpQuery::newDocumentFile($filename);
    
        $doc['title']->text('content');
        $doc->find('#test')->append('some content');
    
        $out = 'output.html';
        file_put_contents($out, $doc);
    ?>
    <!DOCTYPE html>
    <html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>test</title>
    </head>
    <body>
        <p>input: <?=$filename ?></p>
        <p>output: <?=$out ?></p>
    </body>
    </html>
    
[/code]

inputとoutputのファイル名を分けていますが、同じにしても構いません。


CC BY-SA 3.0
2016-10-19T18:26:04.230
29720
2016-10-20T01:14:12.033
2016-10-20T01:14:12.033
2376
2376
29708
answer