Dize yararsız karakter şerit - PHP

4 Cevap php

Ben büyük bir sorun var. Ben bizim web sayfasında şeyler için bir özel kimlik yaptı. Bir örnek görelim:

H0059 - Bu kayıt numarası olarak adlandırılan özel bir kimliktir. Son iki karakter şeyler 'kimliği vardır.

Ben ilk karakter şerit ne demek, gerçek kimliği almak için, gereksiz karakterleri kesmek istiyorum, ve istediğiniz diğer sayılar önce tüm 0s.

Örnek:

L0745 => 745, V1754 => 1754, L0003 => 3, B0141 => 141, P0040 => 40, V8000 => 8000

Bu bana yardımcı olun.

Ben strReplace ile denedim ve patlayabilir ama başarısız oldum: (yardım için teşekkürler.

4 Cevap

Sen kullanabilirsiniz:

preg_replace("/^[^1-9]*(.*?)$/","$1",$str) as:

<?php

$arr = array('L0745','V1754', 'L0003', 'B0141', 'P0040', 'V8000');

foreach($arr as $str) {

    $str = preg_replace("/^[^1-9]*(.*?)$/","$1",$str);

    var_dump($str);
}

?>

Çıktı:

C:\>php a.php
string(3) "745"
string(4) "1754"
string(1) "3"
string(3) "141"
string(2) "40"
string(4) "8000"

Kullanılan regex açıklaması: ^[^1-9]*(.*?)$

  • ^ - Anchor to start matching at the beg of the string.
  • $ - Anchor to match end of the string.
  • [1-9] - Tek sıfır olmayan basamaklı
  • [^1-9] - A single non 1-9 char...can include 0 or any other alphabet.
  • .*? - Gerisini maç
  • () - Grup ve ... hatırlamak ve değiştirme kullanın.

Ilk olarak bu regex dize ve maç yalvarıyorum olmayan 1-9 karakter geçer ve sonuna kadar kalan hatırlar ... ve hatırladı şey ile bütün dize değiştirir.

ltrim(substr($input, 1), '0');

substr starts the string at the first character, skipping the letter.
ltrim will trim off all zeroes from the front.

Or, if you prefer: preg_replace('/^.0*/', '', 'L0003'); //returns 3

Eğer dizinin anahtarları ve dizin geçmek ister gibi bana bakıyor

try array_flip(array)

$arr = array(
   'L0745' => 745, 
   'V1754' => 1754, 
   'L0003' => 3, 
   'B0141' => 141, 
   'P0040' => 40, 
   'V8000' => 8000
);

$new_arr = array_flip($arr);

foreach($new_arr as $k=>$v) {
    echo "Key: ".$k." Value: ".$v."<br />";
}

echo "<pre>".print_r(array_flip($arr),true)."</pre>";
$string = "L0745";
$string = intval(substr($string, 1));

Yani ilk harfini götürmek gerektiğini ve daha sonra intval böylece 007 7 olacak bir dizi olarak okuyacaktır.