Daha büyük bir dize preg_grep

2 Cevap php

Ben bir html dosyası içeriği ile bazı dize preg_reg kullanmanız gerekir.

    $file = file_get_contents($path);
    $html_array = explode(' ', $file);

Sorun dizi bu gibi bazen görünüyor olduğunu:

[77]=>
  string(35) "<div>
</div>
<br>
{{testto}}
<br>"

Ben orada bazı whitespaces koymak için çalıştık ..: P .. :/ Daha sonra ben böyle bir preg_grep yapacak çalışmaz mı:

    $childframes = preg_grep('!\{\{(\w+)\}\}!', $html_array);
    $retur = array();
    foreach($childframes as $v){
        $v = trim($v);
        $retur[] = substr($v, 2, -2);
    }

    return $retur;

Yani fikir bir dizi {{}} testto almak için temelde, ben sadece 'someText' aşağı substrine {{}} someText her ocurrence.

Teşekkürler =)

EDIT: Sorunu tekrarlamak için: patlayabilir .. mümkünse ben yerine sadece boşluk nedeniyle, bazı regex ihtiyacınız doğru çok çalışmıyor, ve büyük bir dize preg_grep yapmak için daha iyi bir yolu var mı?

2 Cevap

Patlayabilir, geçici bir dizi oluşturmak, grep ve daha sonra şerit gerek yok, sadece bir regexp maçı:

$html = file_get_contents($path);
preg_match_all('#{{(.*?)}}#', $html, $matches);
$array_of_texts = $matches[1];

Sadece kullanmak istemiyorum:

strip_tags($v)

Eğer html etiketlerinin tüm çıkarmadan önce bu nedenle, sonra kodu doğru 'sometext' alacak.