php tam eşleşme yerine

4 Cevap php

php düzenli ifadeler için yeni im.

. Ben bazı değerlerin (0) Ne yapmak istediğim bunların yerine sıfıra olarak depolandığı bazı veriler var '-'. Ben tüm verilere şeyi yerine yerleştirmek için neden benim veritabanı tablo günlük Thats güncellenir olarak sıfır alacak olan değer bilmiyorum.

$r_val=preg_replace('/(0)/','-',$r_val);

The code im using is replacing all the zeroes that it finds for eg. it is even replacing zero from 104.67,giving the output 1-4.56 which is wrong. i want that data where value is exact zero that must be replaced by '-' not every zero that it encounter. Can anyone please help!!

R_val $ değerlerin Örnek sahip: -

10.31, 391.05, 113393, 15.31, 1000 etc.

4 Cevap

Bu veri $r_val içinde biçimlendirilir nasıl çok bağlıdır, ancak başlamak için iyi bir yer denemek olacaktır:

$r_val = preg_replace('/(?<!\.)\b0\b(?!\.)/', '-', $r_val);

\b, bir 'kelime' başlangıcını veya sonunu temsil eden bir 0-uzunluk karakter olduğu.

Garip gelebilir ama işlevi aslında uygulanan nerede Perl beri Perl regex documentation, aslında preg_* fonksiyonlarının regex kısmını açıklamak için gerçekten çok iyi olabilir.

Eğer $r_val dize gerçekten neye benzediğini bir örnek kaynağı eğer Yine, bu daha yararlı olacaktır.

Not \b da "0.75" içine "-.75" gibi bir dize açacak kelime sınırları, maçları. Değil arzu edilen sonuç, sanırım.

Diğer cevap çalışır iken, bu bana çok karmaşık görünüyor. Seni ^ ve $ karekter 0 iki tarafında kullanmak için sadece gerekir düşünüyorum.

$r_val = preg_replace('/^0+$/', '&#45', $r_val);
  • ^ Regex satırın başından eşleşmesi gerektiğini gösterir.
  • $ Regex satırın sonuna eşleşmesi gerektiğini gösterir.
  • + Araçlar bu desenini 1 veya daha fazla kez maç

Ben de bu html kodunu eşdeğer eksi işareti değişmiş. Paranoid, evet, ama sonuçta numaraları ile ilgileniyor, bu yüzden en iyi fikir olmayabilir de olsa bir ham eksi işareti atma.

Neden sadece bu yapmak değil mi?


if ( $r_val == 0 )
    $r_val = '-';

Bunun için bir regex kullanmak gerekmez. Aslında, performans nedenlerle bunu karşı tavsiye ediyorum. Yukarıdaki işlem regex çözüm daha yaklaşık 20x hızlıdır.

Ayrıca, PHP kılavuzu basit değiştirmeleri için Regexes kullanarak karşı tavsiye:

If you don't need fancy replacing rules (like regular expressions), you should always use this function instead of ereg_replace() or preg_replace().

http://us.php.net/manual/en/function.str-replace.php

Umarım ki olur!