2017-05-08 44 views
1

我需要一個preg_replace()表達式來刪除除數字和css單位以外的所有字符(字母&標點符號)。但我需要它匹配確切單位而不是字母。(PHP)如何使用preg_replace函數來替換除數字和css單元之外的所有字符?

比如我寫這個表達式:

$check = preg_replace('/[^(0-9|px|em|\%|pt|cm|auto)$]/', '', '80sd0sdfdfpx'); 
echo $check; 

,其結果是:

800px 

那OK,直到這個例子:

$check = preg_replace('/[^(0-9|px|em|\%|pt|cm|auto)$]/', '', '5sdfasdfp'); 
echo $check; 

這將返回:

5ap 

正如你可以看到它也返回單位變量包含的字母。像a in autop in px

所以我需要它返回的CSS單位,如果單詞完全匹配像第一個例子。

任何幫助將不勝感激。

+1

嘗試[該解決方案(https://ideone.com/h3QqrN) 。 –

+0

男人你是我的英雄! @WiktorStribiżew –

回答

1

您可以匹配,並跳過你有序列和其他使用SKIP-FAIL正則表達式刪除任何東西:

$check = preg_replace('/(?:[0-9%]|p[xt]|[ec]m|auto)(*SKIP)(*F)|./', '', '5sdfasdfp'); 
echo $check; 

PHP demo

相關問題