2010-04-28 2 views
1

У меня есть строка, котораяУдаление слова + подстановочное числа из строки

$str = "testingSUB1"; 

Как я могу вырезать SUB* из строки? Я предполагаю использование preg_replace, но я не очень хорошо согласен с тем, что хочу с регулярным выражением.

Кто-нибудь знает, как я могу это сделать?

Спасибо

ответ

3

Это именно так.

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

# s являются разделителями; они могут быть любыми символами, отличными от буквенно-цифровых символов/пробелов/обратной косой черты, которые не отображаются в шаблоне. [0-9] означает любую цифру (вы можете использовать \d тоже на некоторых языках, но я обычно не беспокоюсь), а + означает одно или несколько из предыдущих, поэтому, если вы берете +, он заменяет только первую цифру

+0

+1 - Но почему # вместо /? – Ben

+0

Я привык использовать #, потому что он редко появляется в шаблоне, тогда как/отображается все время (например, в URL-адресах или путях Linux)./будет работать, хотя –

+1

Всегда использовать '' 'когда это возможно вместо' '' также '+ означает, что любой номер предыдущего 'неверен, это означает' one or more' – gameover

2

Это следует сделать это:

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

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

EDIT - Это лучше:

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

+1 для preg_quote. Не знал об этой функции. – mpen

Смежные вопросы