我有这个txt文件结构:
"data";"data";"data";#;"my data";"my data";"my data"
"data";"data";"data";#;"my data";"my data";"my data"
"data";"data";"data";#;"my data";"my data";"my data"
我需要在#符号后读取此文件数据。我的PHP代码只用于读取整行代码。
$file_handle = fopen("texto.txt", "r");
$numlinha = 0;
while (!feof($file_handle)) {
$line = fgets($file_handle);
$numlinha++;
echo $numlinha . ". " . $line . "</br></br>";
}
fclose($file_handle);
您可以使用strpos函数来查找行中第一个#char的位置。
$file_handle = fopen("texto.txt", "r");
$numlinha = 0;
while (!feof($file_handle)) {
$line = fgets($file_handle);
$cpos = strpos($line, '#');
if ($cpos !== FALSE) {
$line = substr($line, 0, $cpos);
}
$numlinha++;
echo $numlinha . ". " . $line . "</br></br>";
}
fclose($file_handle);
$file_handle = fopen("texto.txt", "r");
$numlinha = 0;
while (!feof($file_handle)) {
$line = fgets($file_handle);
$parts = explode("#", $line);
$parts[0] // part before the # in this line
$parts[1] // part behind the # in this line
$numlinha++;
echo $numlinha . ". " . $line . "</br></br>";
}
fclose($file_handle);
您可以使用:$data=爆炸(";#;",$line);然后对$data[1]而不是$line进行处理。
这假设;#;每行都是唯一的。。。
请注意,使用字符串位置测试(strpos())和substr()来提取字符串的一部分,我认为这比只取已经读取的行并在确切的已知分隔符处拆分它更消耗资源,在本例中,分隔符为;#;。
发布的其他示例假设#只在行中出现一次,或者至少除法将是行中的第一个#。使用;#;将使其更加独特,并且如果需要将结果分解为值数组以供其他用途,则可以通过str_getcsv()函数处理结果。
您可以使用分解函数,使用"#"分隔符将字符串拆分为两部分
http://php.net/function.explode