Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php有没有办法突出显示两个字符串之间的差异?_Php - Fatal编程技术网

php有没有办法突出显示两个字符串之间的差异?

php有没有办法突出显示两个字符串之间的差异?,php,Php,我有一个表,它输出两个mySQL记录,一个是原始记录,另一个是经过编辑并标记为管理员批准/不批准的记录。我想更改列颜色以突出显示已编辑的行 除了SalaryFrom和Email之外,更改行上的颜色高亮显示适用于所有行,由于某些原因,即使值看起来完全相同,它们也始终高亮显示为不同 PHP中是否有突出显示两个字符串之间差异的函数,以便我可以找出差异所在 这是我的一行代码: <tr> <?php if (htmlval($cand['salaryfrom'])

我有一个表,它输出两个mySQL记录,一个是原始记录,另一个是经过编辑并标记为管理员批准/不批准的记录。我想更改列颜色以突出显示已编辑的行

除了SalaryFrom和Email之外,更改行上的颜色高亮显示适用于所有行,由于某些原因,即使值看起来完全相同,它们也始终高亮显示为不同

PHP中是否有突出显示两个字符串之间差异的函数,以便我可以找出差异所在

这是我的一行代码:

<tr>
     <?php 
      if (htmlval($cand['salaryfrom'])!==htmlval($flaggedcand['salaryfrom']))
      {
           $tcolor="#000000";
      }
      else 
      {
           $tcolor="#D3D5E8";
      } 
      ?>

      <td bgcolor=<?php echo $tcolor ;?>><b>Salary from</b></td>
     <td><?php htmlout($flaggedcand['salaryfrom']." "); ?></td>
</tr>


function htmlval($text)
{           
    return html_entity_decode($text, ENT_QUOTES);
}
用这个

<?php 
    if ( $cand['salaryfrom'] != $flaggedcand['salaryfrom'] ) $tcolor ="#000000";
    else $tcolor="#D3D5E8"; 
?>

<td style="background: <?php echo $tcolor; ?>;"><b>Salary from</b></td>
<td><?php echo $flaggedcand['salaryfrom'] ." "; ?></td>

有几个原因可以解释为什么字符串看起来是一样的,但它们不是真的。示例:可能需要像这样修剪标题和尾随空间:

function htmlval($text)
{           
    return trim(html_entity_decode($text, ENT_QUOTES));
}
<tr>
     <?php 
      if (htmlval($cand['salaryfrom'])!==htmlval($flaggedcand['salaryfrom']))
      {
           $tcolor="#000000";
           ob_start();
           var_dump(htmlval($cand['salaryfrom']));
           echo " is not equal to ";
           var_dump(htmlval($flaggedcand['salaryfrom']));
           $out = ob_get_clean();
      }
      else 
      {
           $tcolor="#D3D5E8";
           $out = $flaggedcand['salaryfrom'];
      } 
      ?>

      <td bgcolor=<?php echo $tcolor ;?>><b>Salary from</b></td>
     <td><?php htmlout($out." "); ?></td>
</tr>
有几个类、lib或自制函数可以突出显示两个字符串的差异,这不是核心php中的差异,但在您的情况下,可能只需要显式输出字符串1,然后输出字符串2,这样您就可以自己发现差异,如下所示:

function htmlval($text)
{           
    return trim(html_entity_decode($text, ENT_QUOTES));
}
<tr>
     <?php 
      if (htmlval($cand['salaryfrom'])!==htmlval($flaggedcand['salaryfrom']))
      {
           $tcolor="#000000";
           ob_start();
           var_dump(htmlval($cand['salaryfrom']));
           echo " is not equal to ";
           var_dump(htmlval($flaggedcand['salaryfrom']));
           $out = ob_get_clean();
      }
      else 
      {
           $tcolor="#D3D5E8";
           $out = $flaggedcand['salaryfrom'];
      } 
      ?>

      <td bgcolor=<?php echo $tcolor ;?>><b>Salary from</b></td>
     <td><?php htmlout($out." "); ?></td>
</tr>

diff是你要找的术语,我似乎能找到这里的区别是什么?注意,我需要htmlval函数来处理一个或另一个上的特殊字符。区别是!==对抗!=在这个场景中应该没有区别,实际上,建议使用user2721465版本。始终更喜欢使用!==而不是当比较两个字符串时。你能告诉我吗?为什么更喜欢!==比!=?很抱歉我的回答迟了,克里斯纳。我举个例子:$something=0;如果“password123”!=$有些东西是真实的;else echo false;//返回false,但!==总是给出预期的结果