PHP 脚本到 MD5 分别散列每一行

我正在尝试创建一个可以 MD5 快速散列多行(50,000+)的脚本。我有一个我一直在尝试制作的脚本,但它有时会给我不同的输出,我不知道为什么。有任何想法吗?


  <?php  

     if(isset($_POST['btn'])){

            $value=$_POST['text'];

            $ids = explode(PHP_EOL, $value);

            $content = '';

            for ($i=0;$i<count($ids);$i++){

                $content .= md5($ids[$i]).'<br>';

            }


            echo nl2br($content);

     }

     ?>

当我尝试散列时:


apples  

bananas  

oranges  

pineapples

结果是:


265f78fc274d8428fd63dabc24400cb4  

63a63ddf49984e0f1cef336aeb6ca39c  

229b1cc78a248c6cea47fa95565dc9ca  

019b111ec0c13ed923922715bfb1670a  

但我应该得到:


daeccf0ad3c1fc8c8015205c332f5b42  

ec121ff80513ae58ed478d5c5787075b  

91b07b3169d8a7cb6de940142187c8df  

019b111ec0c13ed923922715bfb1670a  


DIEA
浏览 154回答 2
2回答

千万里不及你

输入字符串中的行由 分隔\r\n,但在您的服务器PHP_EOL上设置为\n。因此,当您将输入分成几\r行时,除了最后一行之外,每一行的末尾都有一个。echo md5("apples\r");产生265f78fc274d8428fd63dabc24400cb4.使用trim()删除多余的空格。$content&nbsp;.=&nbsp;md5(trim($ids[$i])).'<br>';

Cats萌萌

您的输入数据中有空格。并且不要在内存中收集所有 50k+ 的哈希值。尝试这个<?php&nbsp;&nbsp;if(isset($_POST['btn'])){&nbsp; &nbsp; $value=$_POST['text'];&nbsp; &nbsp; $ids = explode(PHP_EOL, $value);&nbsp; &nbsp; for ($i=0;$i<count($ids);$i++){&nbsp; &nbsp; &nbsp; &nbsp; echo nl2br(md5(trim($ids[$i])));&nbsp; &nbsp; }}?>
打开App,查看更多内容
随时随地看视频慕课网APP