在php中匹配不同的字符串

时间:2012-03-27 15:18:22

标签: php mysql

继续这种情况我在我的数据库中有一个条目,其字段值如下所示

  • 64 | 65 | 0 | 0 | 72 | 0 | 0 |
  • 61 | 65 | 0 | 0 | 72 | 0 | 0 |

在前端我得到一个类似64 | 65 | 72 | 0 | 0 | 0 | 0 |的字符串(请参阅条目类似于1字段但重新排列)。根据用户输入的选项(请注意字符串长度将保持不变)。

是否可以将用户字段与数据库字段等同,以便从匹配字段的数据库中获取数据

5 个答案:

答案 0 :(得分:2)

如果你爆炸了这个字符串,你就会有一个可以排序的数组。

但除非数据库中的数据也已排序,否则没有用。

e.g。 $my_array = explode("|", trim($str, "|") );

答案 1 :(得分:0)

function rearrange($string)
{
    $temp = explode("|", $string);
    // $temp is now an array. sort it however you want and store it back in $temp
    return implode("|", $temp);
}

答案 2 :(得分:0)

我不确定重新排序规则是什么,但让我们以ABCDEFG形式说明解决方案 - > ABDECFG。

您可以在将数据发送回服务器之前在Javascript中重新排序数据,或者在将数据发送到MySQL之前在服务器上重新排序。由于你的问题是在PHP / MySQL下提交的,我假设你想要执行后者。

请注意,这不是最优雅的解决方案,但它确实清楚地说明了这种方法。一旦理解了基本想法,你就可以对它进行改进:

// Assume $Unsorted = '64|65|0|0|72|0|0|'
$Segments = explode('|', $Unsorted);
if (count($Segments) != 7)  
{
    // Handle the error case
}

$Sorted = sprintf
(
    '%u|%u|%u|%u|%u|%u|%u|',
    $Unsorted[0],
    $Unsorted[1],
    $Unsorted[3],
    $Unsorted[4],
    $Unsorted[2],
    $Unsorted[5],
    $Unsorted[6]
);

// Now, $Sorted = '64|65|0|0|72|0|0|'

答案 3 :(得分:0)

我会像其他人一样说: 将您的字符串拆分为数组,然后进行比较

$myInput = explode('|', $strInput);
$similar = (true === empty(array_diff($myInput, $data))
        && true === empty(array_diff($data, $myInput)));

更正(空只接受变量)

$myInput = explode('|', $strInput);
$diff1 = array_diff($myInput, $data);
$diff2 = array_diff($data, $myInput);
$similar = (true === empty($diff1)
        && true === empty($diff2));

答案 4 :(得分:0)

按管道拆分输入和数据库字符串,并在比较结果数组之前对它们进行排序:

$arr1 = explode('|', '64|65|0|0|72|0|0|');
$arr2 = explode('|', '64|65|72|0|0|0|0|');
sort($arr1);
sort($arr2);
if ($arr1 === $arr2)
   echo "Matched\n";
else
   echo "Not Matched\n";