Dizeden kelime + joker numarasını Çıkarma

2 Cevap

Ben bir dize var

$str = "testingSUB1";

Nasıl SUB* dizeden dışarı şerit olabilir? I preg_replace kullanılarak varsayalım ama regex istediğimi ile eşleşen iyi değilim.

Ben bunu nasıl biliyor mu?

Teşekkür ederim

2 Cevap

Bu yolu.

$str = preg_replace("#SUB[0-9]+#", "", $str);

# s sınırlayıcılardır; onlar desen görünmüyor herhangi non-alphanumeric/whitespace/backslash karakter olabilir. [0-9] (bazı dillerde çok \d kullanabilirsiniz, ama genellikle rahatsız etmeyin) ve + biri veya daha fazlası anlamına gelir herhangi bir rakam anlamına gelir Eğer + çıkarmak ise önceki, bu yüzden sadece ilk basamağı yerini alacak

Bu yapmak gerekir:

$word = 'SUB';
$string = 'testingSUB1';

echo preg_replace('~^(.*?)(' . preg_quote($word, '~') . '\d+)(.*?)$~', '$1$2', $string);

EDIT - This is better:

echo preg_replace('~' . preg_quote($word, '~') . '\d+~', '', $string);