如何逐行比较两个文本输入与PHP?

时间:2015-06-05 10:36:29

标签: php

我想比较两个文本文件是否相同。用户将通过页面上的两个<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>

这将告诉我整个文件是否相同。我现在要做的是检查哪些行不同并返回它们。我怎么能这样做?

1 个答案:

答案 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之间比较它们。如果它们不同,则将该行添加到输出中。这只是一个非常简单的实现,并不能补偿删除的行;只有那些编辑过的。