2016-11-06 3 views
-1

Я хочу удалить все после первого номера (включая номер).Как удалить все после первого появления числа в строке?

Примеры:

banner400x300 
icon80x42   
bla bla55x44  

должно быть:

banner 
icon 
bla bla 

Я пытался что-то вроде этого:

preg_replace("/([^0-9]*[0-9]*)(.*)/", "$1", $str); 

Но это в том числе первых чисел :(

Что такое слизь d способ сделать это? Спасибо :)

+0

Хороший способ состоит в соответствии все, что не является числом с начала строки с 'preg_match', а не заменить. Таким образом, вам не нужно разбирать строку до конца. –

ответ

3

Причина в том, что первая группа захвата содержит [0-9]* и, таким образом, повторно вставлена ​​в результат с помощью обратной ссылки $1.

Самое простое регулярное выражение для этого будет

preg_replace('~\d.*~', '', $s) 

См regex demo

\d.* регулярное выражение находит первую цифру с \d (потому что строка обрабатывается слева направо) и .* будет совпадать до конца строки (для соответствия между строк, добавьте s модификатор: '~\d.*~s').

PHP demo:

$str = "banner400x300\nicon80x42\nbla bla55x44"; 
$result = preg_replace('~\d.*~', '', $str); 
echo $result; 
Смежные вопросы