Bir dizide regex?

2 Cevap php

PHP nasıl regex kullanarak dize bu tür gelen yüzdesini ve boyutuna alabilirim?

Şey ben şöyle print_r fonksiyonunu kullanarak bu dizeyi olsun edilir:

while(!feof($handle))
{
    $progress = fread($handle, 8192);
    print_r($progress); 
}

Bu gibi yukarıda çıkışları şey:

    [download] 28.8% of 1.51M at 171.30k/s ETA 00:06

Ben preg_match'in ama emin değilim nasıl bir dizi için bunu yapmak için artı nasıl dize başvuru yapmak gibi bir şey kullanmak gerekir eminim. Regex döngü içine yerleştirilmesi gerekiyor.

Herhangi bir yardım için teşekkür ederiz.

2 Cevap

Bu deneyin:

foreach ($progress as $str) {
    if (preg_match_all('/\[download] (\d+\.\d)% of (\d+\.\d+\w)/', $str, $matches)) {
        var_dump($matches);
    }
}

Ayrıca, sadece kullanabilirsiniz:

$parts = explode(' ', trim($progress));
$progressPercentage = floatval($parts[1]);

Muhtemelen bir regex daha hızlı ve okumak daha kolay.