2015-07-09 2 views
0

Я пытаюсь найти функцию, которая удаляет все после последнего числового значения строки в PHP.Удалить все после последнего числового значения

  1. Строка Пример 1:

    input: "test test 12C" 
    output: "test test 12" 
    
  2. Строка Пример 2:

    input: "test dddd 3323fff new 83dds" 
    output: "test dddd 3323fff new 83" 
    

Как я могу сделать это PHP?

Я пробовал следующий код, но он не работает, и я не так хорошо с regex:

$address = preg_replace('/[0-9]+$/', '', $row['address']); 
+1

Ваша попытка? – Butterfly

+0

** «Как я могу сделать этот PHP?» ** да, как вы можете это сделать? вы расскажете нам свои мысли и некоторые пробные версии кода, и, конечно же, мы сможем помочь –

+0

добавил, что ive использовал до сих пор – Chris

ответ

2

Вы можете сделать это с регулярным rexpressions:

.*[0-9] 

. * соответствует любому символу (включая ни одного)

[0-9] соответствует любому онемение eric character

Итак, вы указываете регулярное выражение, чтобы оно соответствовало строке, которая начинается с любых символов, за которыми следует числовой символ.

<?php                  
    $str = 'test dddd 3323fff new 83dds'; 
    preg_match('/.*[0-9]/', $str, $result); 
    print_r($result[0]); 
?> 
+0

ваш пример оставляет «dddd 3323fff new 83», который действительно не то, что я хотел, так как «test» dissapears – Chris

+2

Вы должны использовать 'preg_match ('/.* [0-9] /', $ str, $ result);' Тогда у вас есть только 1 совпадающий элемент и можете использовать $ result [0] – TeeDeJee

+0

@TeeDeJee Doh! Да, конечно, спасибо! Крис: Он работает, вы можете скопировать его с пробелом внутри регулярного выражения? – davidgiga1993

0

Это можно сделать довольно красиво с регулярным выражением. Только с незначительной корректировкой формулировки вопроса, а именно, что вы хотите «сэкономить все до и включая» последнее числовое значение.
В этом случае регулярное выражение приобретает вид:

$regexp = "/^(.*\\d)\\D∕"; 

Это связывает RegEx на начало (^), то все соответствует (.*), вплоть до последней цифры (\d), который сопровождается не- разряд (\D). Скобки вокруг части шаблона говорят движку RegEx, что вы хотите сохранить все между ними. Это называется «захватывающей подгруппой».

Ознакомьтесь с руководством по PHP для preg_match() для получения дополнительной информации о том, как использовать это регулярное выражение.

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