PHP köşeli parantez inbetween terimini ayıklamak için normal ifadeler kullanmak nasıl?

2 Cevap php

Ben gibi bir şey var:

$ Dizge1 = "köpek tilki [kedi]"

I [] yani kedi içindeki içeriği ihtiyacı

Başka bir soru: Eğer bir dilde regex aşina iseniz, o da diğer diller için yapacak?

2 Cevap

$matches = array();
$matchcount = preg_match('/\[([^\]]*)\]/', $string1, $matches);
$item_inside_brackets = $matches[1];

Eğer aynı dize birden fazla parantez terimleri maç istiyorsanız, bunun yerine sadece preg_match ve preg_match_all içine bakmak istersiniz.

Ve evet, düzenli ifadeler oldukça çapraz dil standart (orada bazı özellikler, farklı dillerde mevcuttur ne varyasyonlar ve zaman zaman sözdizimi farklılıklar vardır, ama çoğunlukla hepsi aynı şey) vardır.

Yukarıdaki regex açıklaması:

/            # beginning of regex delimiter
\[           # literal left bracket (normally [ is a special character)
(            # start capture group - isolate the text we actually want to extract
[^\]]*       # match any number of non-] characters
)            # end capture group
\]           # literal right bracket
/            # end of regex delimiter

$matches dizinin içerikleri eşleşen metnin tamamını (parantez dahildir) [0], ve daha sonra in eşleşen her yakalama grubunun içeriği, [1] 'de her iki göre ayarlanır ve yukarı ([2], vb [1], saniyede ilk yakalama grubun içeriği).

İşte php kodu:

preg_match('/\[(.*)\]/', $string1, $matches);
echo $matches[1];

Ve evet, senin bilgi aktaracaktır. Düzenli ifadelerin her dilin sürümü arasındaki ince farklılıklar olması Gözat rağmen.