只读 string/line PHP 的某些部分
Read only certain parts of string/line PHP
我有一个文件 (.txt),格式如下:
DOE,JOHN K V00008483028 FB 1444.00
1444.00 1444.00 DOE,JANE HAHN V00008475645 FB 6579.00 -6579.00
我需要找到一种方法来仅从每一行中提取具有帐号的部分,即。 V0000.... 文件中没有定界符,这就是问题所在。
使用explode.
explode(' ', $line)[2]
^- 这将产生 "V00008483028"
但是仅 如果您为每行使用了准确的空格数。如果 John Doe 有中间名,这将行不通。在这种情况下没有好的解决方法。然后您将不得不使用不同的分隔符,例如 |
.
空格可以用作分隔符:
$line = "DOE,JOHN K V00008483028 FB 1444.00 1444.00 1444.00";
$lineParts = explode(" ", $line);
print_r($lineParts);
您也可以使用正则表达式来提取帐号:
preg_match('^V/[0-9]{12}/',$line,$matches, PREG_OFFSET_CAPTURE, 3);
print_r($matches);
假设帐号中有 12 个数字
您可以使用 str_getcsv 逐行解析。此外,它的 return 按数组排列。
详细信息:str_getcsv
$csvString = 'DOE,JOHN K V00008483028 FB 1444.00
1444.00 1444.00 DOE, JANE HAHN V00008475645 FB 6579.00 - 6579.00 ';
$rows = str_getcsv($csvStrin, "\n"); //parse the rows
foreach($rows as $row) {
$val = str_getcsv($row, ";"); //parse the items in rows
if (strstr($val[3], 'V0000')) {
//found V0000
}
}
这个怎么样。希望对您有所帮助
$file = "file.txt";
$f = fopen($file, 'rb');
$found = false;
while ($line = fgets($f, 1000)) {
if ($found) {
echo $line;
continue;
}
if (strpos($line, "V00008") !== FALSE) {
$found = true;
}
}
格式总是以 V0000
开头吗?如果是这样,这将起作用并将结果存储在一个简单的数组中。如果不是,可以修改正则表达式以满足您的需要,例如'/(V\d+)/
.
$str = file_get_contents('./file.txt');
$matches = [];
preg_match('/(V0000\d+)/', $str, $matches);
$matches
//=> [
//=> "V00008483028",
//=> "V00008483028",
//=>]
我有一个文件 (.txt),格式如下:
DOE,JOHN K V00008483028 FB 1444.00
1444.00 1444.00 DOE,JANE HAHN V00008475645 FB 6579.00 -6579.00
我需要找到一种方法来仅从每一行中提取具有帐号的部分,即。 V0000.... 文件中没有定界符,这就是问题所在。
使用explode.
explode(' ', $line)[2]
^- 这将产生 "V00008483028"
但是仅 如果您为每行使用了准确的空格数。如果 John Doe 有中间名,这将行不通。在这种情况下没有好的解决方法。然后您将不得不使用不同的分隔符,例如 |
.
空格可以用作分隔符:
$line = "DOE,JOHN K V00008483028 FB 1444.00 1444.00 1444.00";
$lineParts = explode(" ", $line);
print_r($lineParts);
您也可以使用正则表达式来提取帐号:
preg_match('^V/[0-9]{12}/',$line,$matches, PREG_OFFSET_CAPTURE, 3);
print_r($matches);
假设帐号中有 12 个数字
您可以使用 str_getcsv 逐行解析。此外,它的 return 按数组排列。 详细信息:str_getcsv
$csvString = 'DOE,JOHN K V00008483028 FB 1444.00
1444.00 1444.00 DOE, JANE HAHN V00008475645 FB 6579.00 - 6579.00 ';
$rows = str_getcsv($csvStrin, "\n"); //parse the rows
foreach($rows as $row) {
$val = str_getcsv($row, ";"); //parse the items in rows
if (strstr($val[3], 'V0000')) {
//found V0000
}
}
这个怎么样。希望对您有所帮助
$file = "file.txt";
$f = fopen($file, 'rb');
$found = false;
while ($line = fgets($f, 1000)) {
if ($found) {
echo $line;
continue;
}
if (strpos($line, "V00008") !== FALSE) {
$found = true;
}
}
格式总是以 V0000
开头吗?如果是这样,这将起作用并将结果存储在一个简单的数组中。如果不是,可以修改正则表达式以满足您的需要,例如'/(V\d+)/
.
$str = file_get_contents('./file.txt');
$matches = [];
preg_match('/(V0000\d+)/', $str, $matches);
$matches
//=> [
//=> "V00008483028",
//=> "V00008483028",
//=>]