有没有办法让PHP突出显示两个字符串之间的区别?

时间:2014-10-10 18:07:39

标签: php

我有一个表输出两个mySQL记录,一个原始记录和一个已被编辑并标记为由管理员批准/拒绝的表。我想更改列颜色以突出显示已编辑的行。

更改行的颜色突出显示适用于除" SalaryFrom"之外的所有行。和"电子邮件"由于某种原因,即使值看起来完全相同,它们也总是被突出显示为不同。

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);
}

2 个答案:

答案 0 :(得分:0)

使用此

<?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>

答案 1 :(得分:0)

有几个原因可以解释为什么你的琴弦看起来一样,但它们并不是真实的。示例:可能需要修剪标题和尾随空格,如下所示:

function htmlval($text)
{           
    return trim(html_entity_decode($text, ENT_QUOTES));
}

有两个类,lib或自制函数来突出显示两个字符串差异(不在核心php中)但在你的情况下,它可能只是输出显式字符串1然后字符串2,这样你就可以像这样自己发现差异:

<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>