Строка бесполезных символов - PHP - PullRequest
2 голосов
/ 15 марта 2010

У меня огромная проблема. Я сделал специальный идентификатор для вещей на нашей веб-странице. Давайте посмотрим пример:

H0059 - это специальный идентификатор, называемый регистрационным номером. Последние два символа - это идентификаторы вещей.

Я бы хотел обрезать ненужные символы, получить реальный идентификатор, что означает убрать первый символ и все 0 перед любыми другими числами.

Пример:

L0745 => 745, V1754 => 1754, L0003 => 3, B0141 => 141, P0040 => 40, V8000 => 8000

Пожалуйста, помогите мне в этом.

Я пытался с strreplace и взорваться, но не получилось :( Спасибо за помощь.

Ответы [ 3 ]

4 голосов
/ 15 марта 2010

Вы можете использовать:

preg_replace("/^[^1-9]*(.*?)$/","$1",$str) as:

<?php

$arr = array('L0745','V1754', 'L0003', 'B0141', 'P0040', 'V8000');

foreach($arr as $str) {

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

    var_dump($str);
}

?>

Выход:

C:\>php a.php
string(3) "745"
string(4) "1754"
string(1) "3"
string(3) "141"
string(2) "40"
string(4) "8000"

Объяснение используемого регулярного выражения: ^[^1-9]*(.*?)$

  • ^ - Якорь для начала сопоставления на Прошу строки.
  • $ - привязка к концу строка.
  • [1-9] - одна ненулевая цифра
  • [^1-9] - один не 1-9 символ ... банка включает 0 или любой другой алфавит.
  • .*? - в соответствии с остальными
  • () - сгруппируйте и запомните ... и используйте для замены.

Это регулярное выражение сначала пропускает не 1-9 символов в начале строки, сопоставляет и запоминает остальные до конца ... и заменяет всю строку запомненной вещью.

3 голосов
/ 15 марта 2010

ltrim(substr($input, 1), '0');

substr начинает строку с первого символа, пропуская букву.
ltrim обрежет все нули спереди.

Или, если вы предпочитаете: preg_replace('/^.0*/', '', 'L0003'); //returns 3

0 голосов
/ 15 марта 2010

Похоже, вы хотите, чтобы ключи и индекс массива переключались

try array_flip (array)

<code>$arr = array(
   'L0745' => 745, 
   'V1754' => 1754, 
   'L0003' => 3, 
   'B0141' => 141, 
   'P0040' => 40, 
   'V8000' => 8000
);

$new_arr = array_flip($arr);

foreach($new_arr as $k=>$v) {
    echo "Key: ".$k." Value: ".$v."<br />";
}

echo "<pre>".print_r(array_flip($arr),true)."
";
...