从文件中获取价值 - php

时间:2014-06-26 07:09:38

标签: php strpos

假设我在我的文本文件中有这个:

Author:MJMZ
Author URL:http://abc.co
Version: 1.0

如果我查找字符串“作者”,我如何获得字符串“MJMZ”?

我已经尝试过另一个问题(Php get value from text file)的解决方案,但没有成功。

问题可能是因为strpos功能。就我而言,“作者”这个词有两个。所以strpos功能无法解决我的问题。

4 个答案:

答案 0 :(得分:0)

尝试以下方法:

$file_contents = file_get_contents('myfilename.ext');
preg_match('/^Author\s*\:\s*([^\r\n]+)/', $file_contents, $matches);
$code = isset($matches[1]) && !empty($matches[1]) ? $matches[1] : 'no-code-found';

echo $code;

现在$ matches变量应该包含MJMZ。

上述内容将搜索您文件中Author:CODE_HERE的第一个实例,并将CODE_HERE放入$matches变量。

更具体地说,正则表达式。将搜索以单词Author开头的字符串,后跟可选空格\s*,后跟分号字符\:,后跟可选空格\s*,后跟一个或多个字符,它不是新行[^\r\n]+

答案 1 :(得分:0)

使用:拆分explode处的每一行,然后检查前缀是否与您要搜索的内容相符:

$lines = file($filename, FILE_IGNORE_NEW_LINES);
foreach($lines as $line) {
    list($prefix, $data) = explode(':', $line);
    if (trim($prefix) == "Author") {
        echo $data;
        break;
    }
}

答案 2 :(得分:0)

如果您的文件将包含dinamically添加的项目,则可以将其排序为数组。

$content = file_get_contents("myfile.txt");
$line = explode("\n", $content);
$item = new Array();
foreach($line as $l){
    $var = explode(":", $l);
    $value = "";

    for($i=1; $i<sizeof($var); $i++){
        $value .= $var[$i];
    }

    $item[$var[0]] = $value;
}
// Now you can access every single item with his name:
print $item["Author"];

需要在foreach循环中使用for循环,因此您的列表中可以有多个“”。该程序将在第一个“

中将名称与值分开

答案 3 :(得分:0)

首先从文件中取出行,然后转换为数组,然后按键调用它们。

$handle = fopen("file.txt", "r");
if ($handle) {
while (($line = fgets($handle)) !== false) {
$pieces = explode(":", $line);
$array[$pieces[0]] = $pieces[1];
 }
} else {
// error opening the file.
} 
fclose($handle);
echo $array['Author'];