PHP在文件中查找一半未知字符串

PHP在文件中查找一半未知字符串,php,Php,我正在编写一些代码,但我陷入了一个困境,即我想在数据库之外实现一个语言系统(以后可能会集成它)。 目前,我的语言课上有以下几行代码: final public function findTexts() { global $engine; $file = file_get_contents('./styles/'.$engine->getStyle().''.$engine->getPage()); if(strpos($file, '%%')) {

我正在编写一些代码,但我陷入了一个困境,即我想在数据库之外实现一个语言系统(以后可能会集成它)。 目前,我的语言课上有以下几行代码:

final public function findTexts()
{
    global $engine;
    $file = file_get_contents('./styles/'.$engine->getStyle().''.$engine->getPage());
    if(strpos($file, '%%'))
    {
        echo "String found";
    }
}
让我向您展示我的其他功能:

final public function getText($text)
{
    global $engine, $LANG;
    $text = str_ireplace($text, $LANG[substr($text, 2, -2)], $text);
    echo $text;
}
我想做的是检查一个文件(位于styles文件夹中)中的字符串(例如%%Hi%%)。在我的语言文件中,我说Hi==Hello,所以当我执行getText函数时,它会说‘Hello’。但是,我想简单一点,这样您只需在文件中键入%%Hi%%,language类将自动检查所有开头包含%%,结尾包含%%的字符串,并将%%和%%中的字符串替换为语言文件中的给定字符串

希望这是足够的信息


非常感谢

您可以通过使用正则表达式和。请参见下面的示例:

<?php
final public function findTexts()
{
    global $engine;
    $file = file_get_contents('./styles/'.$engine->getStyle().''.$engine->getPage());
    $language = $this;
    $file = preg_replace_callback('/(%%([^%]+)%%)/',function($matches) use ($language){
        $word = $matches[2];
        return $language->getText($word);
    },$file);
}

谢谢你的评论,但它不起作用。你能再给我解释一下preg\u replace\u回调吗。因为我不理解函数($matches)和use($engine)的用法,我假设getText方法是$engine变量的一部分。函数($matches)use($engine)是一个匿名函数,它将变量$engine导入其变量范围,以便可以使用它。您也可以在函数定义中使用全局$engine,因为$engine是一个全局变量。我现在明白了,但是$这两种$语言都不起作用,你能告诉我什么可以起作用吗?看看我对匿名函数的修改。你可以很容易地理解这一点。