比较两个字符串

时间:2015-07-29 05:13:42

标签: php

我必须对移动设备的各种功能进行比较(约30个功能)。但比较是基于“800 mAH,锂离子电池”这样的值。

假设移动电话'A'的电池尺寸为'800 mAH,锂离子电池'

和第二个移动'B'的电池尺寸为“锂离子电池,400 mAH”

然后A比B好。

那么如何比较800 mAH和400 mAH忽略其余的'锂离子电池',

几乎在所有30个功能中,我必须进行这种比较。就像我必须在4Mb和1GB上进行比较。

目前我正在尝试使用list($ a,$ b)= explode()类型函数。 有没有更好的解决方案。

2 个答案:

答案 0 :(得分:5)

这取决于字符串。鉴于您作为有限样本提供的两个,您可以忽略非数字字符(也留下句点),然后比较数字。像这样:

$number_a = preg_replace( '/[^0-9.]/', '', $string_a;
$number_b = preg_replace( '/[^0-9.]/', '', $string_b;

然后将它们作为数字进行比较:

if ( $number_a > $number_b ) {
    ...
}

只要你总是比较相同的单位,例如你的示例节目,这就有效。但是,如果单位不同,例如,#400; 800 mAH,锂离子电池" vs."锂离子电池,.4 AH"然后它不会。您必须添加一些逻辑来解析和解释单位。

答案 1 :(得分:3)

如何从字符串中提取数字并进行比较

$A = filter_var('800 mAH, Li-ion Battery', FILTER_SANITIZE_NUMBER_INT);

$B = filter_var('Li-ion Battery, 400 mAH', FILTER_SANITIZE_NUMBER_INT);

if($A > $B){
// A is better
}