【问题标题】:Include CSS and JS in PHP based on condition根据条件在 PHP 中包含 CSS 和 JS
【发布时间】:2017-12-08 21:21:06
【问题描述】:

有没有办法在 PHP 解析 PHP 内容正文时搜索某些关键字,这样我就可以在提供页面之前根据这些关键字的存在来包含 CSS 和 JS 文件?

如果 PHP 有一个像 $_CONTENT_BODY 这样的变量,它将解析后的页面输出到其中,那么我可以像下面的例子那样搜索关键字:

if(stripos($_CONTENT_BODY, 'usetinymce') !== false)) echo '<script type="text/javascript" src="http://a.host.com/js/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>';

【问题讨论】:

    标签: javascript php css conditional


    【解决方案1】:

    您可以获取页面本身并对其进行解析。

    <?php   
    if (!isset($_GET['doNotCallMeAgain']) || $_GET['doNotCallMeAgain'] !== 1) {
        $urltothisfile = 'urltothefilehimself'+'?doNotCallMeAgain=1';
        $result = file_get_contents ($urltothisfile); //in $result you will get your page as html and you can search in it
    } ?>
    

    【讨论】:

    • 这表明页面已完全生成并提供。这不是我想要的。
    • 页面将完全生成并提供给请求页面本身的服务器,而不是提供给请求页面的客户端。然后您可以在此处签到并决定如何为原始请求提供页面。
    • 当心,使用 file_get_content 时,您会丢失 Session、cookie、标头、发布和获取,...
    【解决方案2】:

    你可以组装一个变量,你可以在末尾搜索和输出。

    $_CONTENT_BODY  = 'here ';
    $_CONTENT_BODY .= 'is some ';
    $_CONTENT_BODY .= 'content.';
    
    if(stripos($_CONTENT_BODY, 'some')){
     // do whatever you like
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用ob_start();$text = ob_get_contents();。只要确保您正确处理这些,请查看http://php.net/manual/en/book.outcontrol.php

      【讨论】:

      • 谢谢,这就是我要找的!
      【解决方案4】:

      您可以包含另一个 php 文件并使用 ob_start/ob_get_clean() 获取结果

      ob_start();
      include 'myfile.php'; 
      $_CONTENT_BODY = ob_get_clean();
      

      但是你会遇到一些问题,比如一些php错误的白页。 最好以更合乎逻辑的方式构建您的应用,而不是进行一些肮脏的搜索和替换。

      【讨论】:

      • 现在我已经阅读了手册,在您的示例中使用$_CONTENT_BODY = ob_get_flush(); 会更安全,它也会停止输出缓冲。
      猜你喜欢
      • 2017-11-22
      • 1970-01-01
      • 2013-05-25
      • 2012-04-21
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多