我想比较两个文本文件是否相同。用户将通过页面上的两个<textarea>
元素输入它们。这就是我所拥有的:
<?php
if(isset($_POST['a'], $_POST['b'])){
echo $_POST['a'] === $_POST['b'] ? 'EXACTLY the same' : 'NOT the same';
}
?>
<form action="" method="post">
<textarea name='a' placeholder='File 1'></textarea>
<textarea name='b' placeholder='File 2'></textarea>
<input type='submit' value='GO!'>
</form>
这将告诉我整个文件是否相同。我现在要做的是检查哪些行不同并返回它们。我怎么能这样做?
答案 0 :(得分:0)
以下是我提出的建议:
<?php
if(isset($_POST['a'], $_POST['b'])){
$a = explode(PHP_EOL, $_POST['a']); $b = explode(PHP_EOL, $_POST['b']);
$outl = ''; $outa = ''; $outb = '';
foreach($a as $k => $v){
if($v !== $b[$k]){
$outl .= ($k + 1).'<br>';
$outa .= $v.'<br>';
$outb .= $b[$k].'<br>';
}
}
echo '<table><tr><td>'.$outl.'</td><td>'.$outa.'</td><td>'.$outb.'</td></tr></table>';
}
?>
<form action="" method="post">
<textarea name='a' placeholder='File 1'></textarea>
<textarea name='b' placeholder='File 2'></textarea>
<input type='submit' value='GO!'>
</form>
它将输入分解为数组,每个值都是一行。然后在a和b之间比较它们。如果它们不同,则将该行添加到输出中。这只是一个非常简单的实现,并不能补偿删除的行;只有那些编辑过的。