php belirtilen çizgi şerit preg_match kullanarak

4 Cevap php

There has always been a confusion with preg_match in php. I have a string like this:

apsd_01_03s_somedescription apsd_02_04_somedescription

Ben 3. çizgi dahil 3 çizgi şey kapalı şerit preg_match kullanabilirsiniz.

teşekkürler.

4 Cevap

Bu deneyin:

preg_replace('/^([^_]*_[^_]*_[^_]*).*/', '$1', $str)

Bu _ tarafından ayrılır, sadece ilk üç dizileri alacaktır. Yani üçüncü gelen _ her şey silinecektir.

Eğer "_somedescription" kısmını şerit isterseniz:.

 preg_replace('/([^_]*)([^] *) ([^] *) _ (*) ​​/ ',' $ 1_ $ 2_ 3 $ ', $ str) ; 

Ben yerine düzenli ifadeler kullanarak, PHP'nin dizi işlevlerini kullanabilirsiniz, ancak Gumbo cevabı katılıyorum:

$s = "apsd_01_03s_somedescription";

$parts = explode("_", $s);
echo implode("_", array_slice($parts, 0, 3));
// apsd_01_03s

Bu yöntem, bir normal ifade, çözeltiye kıyasla, hız benzer şekilde çalıştırmak için görüntülenir.

Üçüncü çizgi sonuncusu ise, bunu yapabilirsiniz:

preg_replace('/^(.+)_.+?)$/', $1, $str);