比较两位优雅的解决方案

时间:2015-12-23 17:33:03

标签: php

我有以下两个变量:

$addressphone='5612719999';
$googlephone='561-271-9999';

PHP中是否有一个优雅的解决方案可以验证这两个变量实际上是否相等。我不想使用str_replace,因为条件可以改变,我必须考虑到一切。

我已尝试castingintval,但似乎都没有效果

更新

$addressphone='5612719999';
$googlephone='561-271-9999';
preg_replace("/\D/","",$googlephone);
var_dump($googlephone);

返回string(12) "561-271-9999"

5 个答案:

答案 0 :(得分:2)

我有点重申评论所说的内容,但你应该从每个字符串中删除非数字,然后比较它们的整数值。

// original, non-integer-infested strings
$addressphone= "5612719999";
$googlephone= "561-271-9999";

// remove non-digits
$addressphone = preg_replace("/\D/","",$addressphone);
$googlephone = preg_replace("/\D/","",$googlephone);

然后您可以检查以下条件是否相等:

// compare integer values of digit-only strings
intval($addressphone) == intval($googlephone)
// should return true

答案 1 :(得分:0)

我会使用preg_replace()删除所有非数字字符。这样,您只需使用数字字符串,您可以按照自己喜欢的方式进行比较。

<?php
    $testString = "123-456-7890";
    echo preg_replace("/\D/", "", $testString); //echos 1234567890
?>

答案 2 :(得分:0)

试试这个:

print_r($addressphone === implode("", explode("-",$googlephone)))

答案 3 :(得分:0)

$pieces = explode("-", $googlephone);
$newstring=""; 
foeach ($piece in $pieces)
{
$newstring +=piece;
}

现在将您的字符串与$ newstring进行比较。

答案 4 :(得分:0)

删除不是数字的所有内容:

<?php

$addressphone ='5612719999';
$googlephone  ='561-271-9999';

$number_wang = function($numberish) {
    return preg_replace('/[^0-9]/', '', $numberish);
};

assert($number_wang($googlephone) == $addressphone);