php Dolar miktarı Düzenli İfade

3 Cevap php

Ben Düzenli ifadeler kullanarak bir formun javascript doğrulama tamamlamış yaşıyorum ve artık PHP kullanarak gereksiz doğrulama sunucusu tarafında çalışıyorum.

Ben dolar değerleri bulur benim JScript kodu bu düzenli ifade kopyalanan ve bir PHP dostu format için reformlar var:

/\$?((\d{1,3}(,\d{3})*)|(\d+))(\.\d{2})?$/

Özellikle:

if (preg_match("/\$?((\d{1,3}(,\d{3})*)|(\d+))(\.\d{2})?$/", $_POST["cost"])){}

Ifade javascript büyük çalışır iken alıyorum:

Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 1

PHP bunu çalıştırdığınızda. Bu hata geliyor neden kimse bir ipucu var mı?

3 Cevap

Eğer $ kaçmak çift var.

if (preg_match("/\\\$?((\d{1,3}(,\d{3})*)|(\d+))(\.\d{2})?$/", $_POST["cost"])){}

Sadece \ $ koyarak php değişken başlatılmasını $ kaçmak olacaktır. Ayrıca önünde başka (\ \) \ kaçtı eklemek zorunda. Php bir değişkenin başlangıcı olarak $ yorumlamak değildir bu yüzden Yoksa sadece tek tırnak kullanabilirsiniz.

PHP belgeleri:

Do not use preg_match() if you only want to check if one string is contained in another string. Use strpos() or strstr() instead as they will be faster.

Bu deneyin:

if (preg_match('/\$?((\d{1,3}(,\d{3})*)|(\d+))(\.\d{2})?$/', $_POST["cost"])){}

Arasındaki dolar işareti "bir değişkenin başlangıç ​​olarak kabul edilir, bu iki kod parçacıkları ile karşılaştırın.:

1:

$var = "hello";
echo "$var world";

2:

$var = "hello";
echo '$var world';