2017-05-08 7 views
1

数字とcssの単位を除くすべての文字(英文の&の句読点)を削除する式が必要です(preg_replace())。しかし、私はそれが正確な単位に一致する必要があります。例えば(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 

ご覧のとおり、cssの単位変数に含まれる文字も返されます。 a in autoおよびp 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

関連する問題