Onu nasıl sonunda tüm numarasıyla eşleşebilir aşağıdaki dize göz önüne alındığında?
$string = "Conacu P PPL Europe/Bucharest 680979";
Ben dize uzunluğu sabit olmadığını söylemek zorundayım.
Seçim benim dili PHP.
Teşekkürler.
Bu gibi preg_match
a> ile bir regex kullanabilirsiniz:
$string = "Conacu P PPL Europe/Bucharest 680979";
$matches = array();
if (preg_match('#(\d+)$#', $string, $matches)) {
var_dump($matches[1]);
}
Ve alırsınız:
string '680979' (length=6)
Ve burada bazı bilgiler vardır:
#
başlangıç ve regex sonunda sınırlayıcılardır - onlar bir şey demek istemiyorum: onlar sadece regex bir başlangıcını ve bitişini göstermek; ve istediğiniz her türlü karakter kullanabilirsiniz (insanlar ofen kullanım /
)()
means you want to capture what is between them
preg_match
ile, üçüncü parametre olarak verilen dizinin, bu yakalanan verileri içerecek()
, bir dizi in eşleşen her verileri içerecek\d
"bir numara" anlamına gelir+
, bir veya daha fazla zaman anlamına gelirYani:
Detaylı bilgi için, PCRE Patterns bakmak ve Pattern Syntax
a>.
EDIT: Bu cevap kontrolleri dizesindeki son karakteri bir rakam olup olmadığını. Soru Check if a Variable has a number at the end bu tıpatıp bir kopyası olarak kapatıldığı gibi, ben burada bunun için benim cevap sonrası edeceğiz. Bu soruya OP rağmen talep ne için, kabul cevabı kullanın.
Burada bir dizesinde son karakter bir rakam olup olmadığını kontrol etmek için benim olmayan-regex çözüm:
if (ctype_digit(substr($string, -1))) {
//last character in string is a digit.
}
substr
geçen -1
ardından ctype_digit
true
dönecekleri karşı kontrol edilir dizenin son karakteri, dönecektir = başlarsanız karakteri bir rakam olduğunu, ya da false
aksi.
References: