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


How to compare two text inputs line-by-line with 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>

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

我是这么想的:

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