2012-11-01 24 views
-1

我很努力地找到一個解決方案,使用preg_match_all從下面的文本中只獲取值和測量值untis,e.x.文本preg_match_all用php獲取測量值與單位

MAN CAB HDMI TO HDMI M/M 18 cm SHIELDED 1.3V BLK 
MAN CAB HDMI TO HDMI M/M SHIELDED 1.3V BLK 18cm 
MAN CAB HDMI TO HDMI M/M SHIELDED 1.3V BLK 5M 
MAN CAB HDMI TO HDMI 5 M M/M SHIELDED 1.3V BLK 
MAN CAB HDMI TO HDMI M/M SHIELDED 1.3V BLK 5.0 m 
MAN CAB HDMI TO HDMI M/M SHIELDED 1.3V BLK 5.2m 
MAN CAB HDMI TO HDMI 5,2m M/M SHIELDED 1.3V BLK 
MAN CAB HDMI TO HDMI M/M 5,2 m SHIELDED 1.3V BLK 

想獲得的結果

18 cm,18cm,5M,5 M,5.00 M,5.0 mm,5.2m and 5,2m 
+0

怎麼樣'\ d + [。\] \ d + \ s *(V |釐米| M | M)' –

+0

你有沒有在你的問題概括爲什麼每個值選擇。 – hakre

回答

1

像這樣的東西應該工作:

preg_match_all("/[0-9,.]+\s*(cm|m|mm)/mis", $string); 

mis標誌使正則表達式不區分大小寫,並允許在匹配換行符。

+0

yes爲工作,但將需要一些修復我會得到0 => '18釐米」, 1 => '18釐米', 2 => '5M', 3 => '5 M', 4 = > '00 M', 5 =>'2m', 6 =>'5,2m', – user1356820

+0

/[0-9,.]+\s*(cm|m)/mis ..我想這是工作......謝謝 – user1356820

+1

你需要給字符類添加'\ .'。 –

0

如何:

preg_match_all('/([0-9,\.]+\s?(cm|mm|m))/mis', $string, $matches); 
+0

不應該[cm | mm | m] +'是'(cm | mm | m)'? – Halcyon

+0

不,因爲匹配是整個模式:) – Ignas

+0

是的,這是工作正常..謝謝.. – user1356820