【问题标题】:Searching for a specific string from all PHP files in the parent directory (Updated)从父目录中的所有 PHP 文件中搜索特定字符串(更新)
【发布时间】:2016-05-22 01:54:37
【问题描述】:

不久前,我发了一篇文章 (Searching for a specific string from all PHP files in the parent directory),内容是关于我在数组中查找文件路径的位置,前提是文件具有特定的关键字。

但是,那是在我的旧网站中,我现在已经丢失了。所以我目前正在重新创建它。但是,由于某种原因,此功能不起作用。

  public function build_active_theme() {
$dir = CONPATH . '/themes/' . $this->get_active_theme() . '/';

$theme_files = array();
foreach(glob($dir . '*.php') as $file) {
    $theme_files[] = $file;
}

$count = null;
foreach($theme_files as $file) {
    $file_contents = file_get_contents($file);
    if(strpos($file_contents, 'Main')) {
        $array_pos = $count;
        $main_file = $theme_files[$array_pos];

        echo $main_file;
    }
    $count++;
}

}

此函数导致以下错误:

注意:未定义索引:在 /home/u841326920/public_html/includes/class.themes.php 第 30 行

我已将问题的范围缩小到 $count 变量的问题。一旦脚本找到正确的文件,每当我尝试回显 $count 值时,什么都不会显示。

但是在这样一个简单的问题上花了将近一个小时后,我显然开始感到沮丧,所以我现在正在寻求帮助。

(注意:我直接将旧帖子中的函数复制到我的代码中,并对变量进行了适当的更改以在新站点中“工作”,因此它与修复我的解决方案几乎完全相同以前的问题 - 有趣的是,这也是由 $count 变量引起的)。

谢谢, 基隆

【问题讨论】:

    标签: php loops count themes frontend


    【解决方案1】:

    您可以使用 foreach $key 代替单独的计数变量,试试下面的代码:

    foreach($theme_files as $key => $file) {
        $file_contents = file_get_contents($file);
        if(strpos($file_contents, 'Main') !== false) {
            $main_file = $theme_files[$key];
    
            echo $main_file;
        }
    }
    

    【讨论】:

    • 太好了,成功了!谢谢!编辑:一旦可以,我将标记为答案。
    • 旁注:如果 'Main' 是内容的第一个单词,strpos() 可能会返回 0。您可以添加!== false 以确保它真的没有找到,我在我的答案中更新了它。
    • 谢谢!我非常感谢改进,并已将其实施。再次感谢!
    • 对任何未来用户的更新,我建议将 strpos 更改为 stristr 以支持区分大小写的字符串(如果您愿意支持 - 像我一样)。不幸的是,由于更改不是“至少 6 个字符”,我无法更新帖子...
    【解决方案2】:

    你正在设置 $计数=空; , 尝试在 $array_pos = $count;

    【讨论】:

      猜你喜欢
      • 2016-07-12
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-22
      • 2013-11-27
      • 2018-05-05
      • 2018-03-24
      相关资源
      最近更新 更多