Bir dize içindeki verileri aranıyor.

3 Cevap php

Ben veri kazımak için gereken bazı dizeleri var. Ben ihtiyacım parçası öncesi ve sonrası verileri dize bakmak ve silmek için PHP söylüyorum basit bir yol gerekir. Örneğidir:

When: Sat 19 Sep 2009 22:00 to Sun 20 Sep 2009 03:00 

Ben "ne zaman:" Silmek istediğiniz ve sonra & çıkarın ve ondan sonra her şey. Bu bir Regex şey var mı? Gerçekten önce onları kullanılmaz.

3 Cevap

Bunun için normal ifadeler kullanmak olmaz.

$data = substr($input, 6, strpos($input, '&') - 6);

Evet, regex uykusunda bu tür bir şey yapabilirsiniz.

$result = preg_replace('/When:(.*)&.*/', '$1', $text);

UPDATE If you want to find the date range only, in the middle of a lot of other text, here is a crude regex that will match the one in the question...

if (preg_match('/[a-z]{3} [0-9]{2} [a-z]{3} [0-9]{4} [0-9]{2}:[0-9]{2} to [a-z]{3} [0-9]{2} [a-z]{3} [0-9]{4} [0-9]{2}:[0-9]{2}/i', $text, $regs)) {
    $result = $regs[0];
} else {
    $result = "";
}

Yani "Sun 20 Eylül 2009 03:00 Cmt 19 Eyl 2009 22:00" tutmak isterim

Peki size sıradanifade Alright için gidebilirsiniz. Ben PHP Regexp hakkında çok fazla bilmiyorum, ama PERL, sizin gibi somehing yapabilirdi

/ ^ Zaman: (. *) \ $ /.

(. *) Sonra tüm bu zaman tutmak istediğini elde etmek için kullanılan olabilir. PERL, o 1 $ VAR bakıyor olurdu.

Ya da böyle bir şey yapabileceğini

/ ^ Zaman: ve sonra içeriği değişkendir ()\&. $ / eğer..

Ayrıca, dikkat gerekir. Saklamak istediğiniz dize içeriyorsa & sonra olabilir biraz daha zor.

Ama RegExp genelde bu tip iş için aldığım için yoludur.