Php 合并两个文本字符分隔的文本文件中的列
例如,我有两个文件Php 合并两个文本字符分隔的文本文件中的列,php,explode,Php,Explode,例如,我有两个文件 file1.txt和file2.txt,每一行包含两列,由:字符分隔 file1.txt包含例如以下内容:(我想使用第一个“列”) 并且file2.txt包含例如以下内容(我想使用第二个“列”) 因此,我正在寻找以下输出: a:c markus:hallo peter:gruss lach:langsam a:c markus:hallo peter:gruss lach:langsam 这怎么可能 我目前的代码如下: <?php $file1 = 'a:b
file1.txt
和file2.txt
,每一行包含两列,由:
字符分隔
file1.txt
包含例如以下内容:(我想使用第一个“列”)
并且file2.txt
包含例如以下内容(我想使用第二个“列”)
因此,我正在寻找以下输出:
a:c
markus:hallo
peter:gruss
lach:langsam
a:c
markus:hallo
peter:gruss
lach:langsam
这怎么可能
我目前的代码如下:
<?php
$file1 = 'a:b
markus:lanz
peter:heinrichs
lach:schnell';
$file2 = '
lanz:hallo
heinrichs:gruss
b:c
test:notest
schnell:langsam';
$array = explode(":", $file1);
for($i=0; $i < count($array); $i++) {
$array = explode(":", $file1);
$pattan = $array[$i];
$pattern = '=\n'. $pattan .':(.*)\n=sUm';
$result = preg_match($pattern, $file2, $subpattern);
echo "<br>";
echo $array[$i];
$first = $array[$i];
echo "<br>";
}
$pattern = '=\n'. $first .':(.*)\n=sUm';
$result = preg_match($pattern, $file2, $subpattern);
var_dump($subpattern);
?>
使用
preg\u split
和array\u map
功能的解决方案:
$file1_content = "a:b
markus:lanz
peter:heinrichs
lach:schnell";
$file2_content = "b:c
lanz:hallo
heinrichs:gruss
schnell:langsam";
// \R modifier matches line break among all platforms (\r\n|\n|\r)
$file1_parts = preg_split('/\R/', $file1_content);
$file2_parts = preg_split('/\R/', $file2_content);
$cross_result = array_map(function($fp1, $fp2){
return explode(":", $fp1)[0] .":". explode(":", $fp2)[1] . PHP_EOL;
}, $file1_parts, $file2_parts);
$cross_result = implode("", $cross_result);
print_r($cross_result);
输出:
我的想法/代码是这样的 不起作用 但在一些人憎恨或类似的事情之前:
<?php
$file1 = 'a:b
markus:lanz
peter:heinrichs
lach:schnell';
$file2 = '
lanz:hallo
heinrichs:gruss
b:c
test:notest
schnell:langsam';
$array = explode(":", $file1);
for($i=0; $i < count($array); $i++) {
$pattern = "/^.*\b". $array[$i] ."\b.*$/m";
$matches = array();
preg_match($pattern, $file2, $matches);
var_dump($matches);
echo $array[$i] . ":";
}
?>
从编写一些代码开始。没有人会为你做这件事。展示你所做的,然后我们可以帮助你。非常感谢你,先生。如果我还想从a:b:c:d:e:f:g:h:iwelcome开始做这件事,你能解释一下“从a:b:c:d:e:f:g:h:i开始做这件事”是什么意思吗?如果我对文件1和文件2有不同的顺序,那么我能做什么?在你的情况下,顺序应该严格,否则你会收到不相关的对,如果我对$file1和$file2有不同的订单,比如:$file1='markus:lanz a:b peter:heinrichs lach:schnell'$array1=分解(“\n”,$file1)$file2='b:c lanz:hallo heinrichs:gruss schnell:langsam'$array2=分解(“\n”,$file2);
a:c
markus:hallo
peter:gruss
lach:langsam
$file1 = 'a:b
markus:lanz
peter:heinrichs
lach:schnell';
$array1 = explode("\n", $file1);
$file2 = 'b:c
lanz:hallo
heinrichs:gruss
schnell:langsam';
$array2 = explode("\n", $file2);
$array3 = array();
foreach($array1 as $i => $value) {
$key = explode(':',$value)[0];
$val = explode(':',$array2[$i])[1];
$array3[] = $key.':'.$val;
}
$file3 = implode("\n",$array3);
<?php
$file1 = 'a:b
markus:lanz
peter:heinrichs
lach:schnell';
$file2 = '
lanz:hallo
heinrichs:gruss
b:c
test:notest
schnell:langsam';
$array = explode(":", $file1);
for($i=0; $i < count($array); $i++) {
$pattern = "/^.*\b". $array[$i] ."\b.*$/m";
$matches = array();
preg_match($pattern, $file2, $matches);
var_dump($matches);
echo $array[$i] . ":";
}
?>