假设我在我的文本文件中有这个:
Author:MJMZ
Author URL:http://abc.co
Version: 1.0
如果我查找字符串“作者”,我如何获得字符串“MJMZ”?
我已经尝试过另一个问题(Php get value from text file)的解决方案,但没有成功。
问题可能是因为strpos
功能。就我而言,“作者”这个词有两个。所以strpos功能无法解决我的问题。
答案 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'];