我的文件行显示为 word_1:word_2 (例如文件看起来像
username:test
password:test_pass
dir:root
)
。当我有word_1时,如何从文件word_2中找到? PHP中是否包含和子串一样的字符串?
答案 0 :(得分:3)
要查明字符串是否包含其他字符串,请使用strpos()
请注意,在使用!==
函数时需要strpos()
,因为如果字符串以您要查找的字符串开头,则返回0,这与false相同。
if(strpos($mystring, 'word_1') !== false)
{
//$mystring contains word_1
}
我会使用explode()函数来分割字符串并获取第二部分。
答案 1 :(得分:1)
你没有很好地描述你的文件格式,但它的格式可能像csv文件
$file = fopen('filename', 'r');
while (($line = fgetcsv($file, 1024, ':')) !== false) {
if (in_array($needle, $line)) {
return $line;
}
}
return null;
如果您认为自己始终在寻找第一个字段,则可以将in_array(/* .. */)
替换为$line[0] === $needle
。
更新:在编辑问题之后,我会建议像这样的东西,因为看起来该文件只是一种csv文件(用“:”代替“,”)。
function getValue ($key, $filename) {
$file = fopen('filename', 'r');
while (($line = fgetcsv($file, 1024, ':')) !== false) {
if ($line[0] === $key) {
fclose($file);
return $line[1];
}
}
fclose($file);
return null;
}
还要考虑一次读取文件,然后只访问值
class MyClass {
private $data = array();
public function __construct ($filename) {
$file = fopen('filename', 'r');
while (($line = fgetcsv($file, 1024, ':')) !== false) {
$this->data[$line[0]] = $line[1];
}
fclose($file);
}
function getValue ($key, $filename) {
return array_key_exists($key, $this->data)
? $this->data[$key];
: null;
}
}