1

我一直在尝试从使用 php 中的 file() 函数从文本文件创建的数组中提取特定的单词。

文本文件 sample.txt 是这样的:

A registration has been received. 

Name: test
Lastname: test2 
Email: test@test.com
Company/School: Test2
Company2: test3
Address1: test4
Address2: test5
City: test6
State: test7
Country: test8
Zipcode: test9

现在我使用了 file() 函数将这个文本文件放入一个数组中。

$file_name='sample.txt';
$file_array=file($file_name);

然后我遍历循环以提取每个值并从该数组中搜索单词 say 'Name'。

    $data1='Name';

    foreach($file_array as $value){
    if(stripos($value,$data1)===FALSE)
        echo "Not Found";
     else 
       echo "Found";
    }

但它总是打印“未找到”。我曾尝试使用 strpos、strstr、preg_match 但无济于事。此外,如果我使用普通的单词数组而不是从文件创建,它可以正常工作。

提前致谢。

更新:我在这个问题上的目标是首先检测它是什么字段。“名称”,然后是它的值 ex。'测试'

4

2 回答 2

1

这当然可能是行尾问题或文件编码问题,我也不确定 file() 究竟如何处理空格。

作为关于如何改进代码的建议,如果您从数据中创建自己的键控数组,那么您可以使用更可靠的 array_key_exists() 函数来搜索您的字段。

$file_name = 'sample.txt';
$file_data = file($file_name);

// loop through each line
foreach ($file_data as $line) {

// from each line, create a two item array
$line_items = explode(":", $line);

// build an associative (keyed) array
// stripping whitespace and using lowercase for keys
$file_array[trim(strtolower($line_items[0]))] = trim($line_items[1]);
}

现在您可以使用 array_key_exists 如下:

if (array_key_exists("name", $file_array) === false) {
  print "Not found.";
} else {
  print "Found.";  
  // and now it's simple to get that value
  print "<br />Value of name:  " . $file_array['name'];
}
于 2011-07-26T21:34:05.600 回答
0

很可能您的数组中每个“行”的末尾仍然有换行符。尝试像这样加载它:

$file_array=file($file_name, FILE_IGNORE_NEW_LINES);
于 2011-07-26T20:57:58.740 回答