Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: preg_replace - как убрать нули в начале строки?
Форумы портала PHP.SU » » Кодировки и все смежное » preg_replace - как убрать нули в начале строки?

Страниц (1): [1]
 

1. Alpinist - 18 Ноября, 2011 - 10:27:36 - перейти к сообщению
Нужно из строки "0101-03WB" убрать нули в начале строки и любые символы кроме букв и цифр.
Любые символы кроме букв и цифр убираю так:

а как переписать паттерн чтобы еще и нули в начале строки убирать?
2. LIME - 18 Ноября, 2011 - 11:36:34 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. echo preg_replace("/^0*[^0-9a-z]/i", "","0101-03WB");

(Добавление)
хотя наверное быстрее будет применить
PHP:
скопировать код в буфер обмена
  1. $str=ltrim($str,'0');
  2. $str=preg_replace("/[^0-9a-z]/i", "","0101-03WB");
  3.  
3. Alpinist - 18 Ноября, 2011 - 11:43:26 - перейти к сообщению
LIME пишет:
"/^0*[^0-9a-z]/i"

не работает, возвращает ту же самую строку
(Добавление)
LIME пишет:
хотя наверное быстрее будет применить
PHP:
$str=ltrim($str,'0');
$str=preg_replace("/[^0-9a-z]/i", "","0101-03WB");

а если все таки через регулярные выражения?
4. LIME - 18 Ноября, 2011 - 11:50:27 - перейти к сообщению
Alpinist усложнение выражения приводит в замедлению в геометрической прогрессии
а trim это ОЧЕНЬ быстрые ф-ции
мне кажется целесообразнее так
(Добавление)
ну если угодно
PHP:
скопировать код в буфер обмена
  1. echo preg_replace("/(^0+)|[^0-9a-z]/i", "","0101-03WB");

(Добавление)
PHP:
скопировать код в буфер обмена
  1. $str=preg_replace("/[^0-9a-z]/i", ltrim($str,'0'));
5. Alpinist - 18 Ноября, 2011 - 12:15:39 - перейти к сообщению
Спасибо, все работает! =)
(Добавление)
+ а чтобы "(^0*)|[^0-9a-z]" табуляцию и пробелы в начале строки убирал... =)
6. OrmaJever - 18 Ноября, 2011 - 12:29:45 - перейти к сообщению
Alpinist пишет:
+ а чтобы табуляцию и пробелы в начале строки убирал... =)

7. Alpinist - 18 Ноября, 2011 - 12:32:32 - перейти к сообщению
OrmaJever, я уточнил что имел ввиду
8. LIME - 18 Ноября, 2011 - 12:37:35 - перейти к сообщению
Alpinist у вас задача сделать это вочтобытонестало регуляркой?
если нет то трим
если это типа задания такая хитрая то так
PHP:
скопировать код в буфер обмена
  1. echo preg_replace("/(^[0\t ]+)|[^0-9a-z]/i", "","0101-03WB");
9. Alpinist - 18 Ноября, 2011 - 12:49:32 - перейти к сообщению
Отлично, немного переписал и получил прямо то что нужно: "(^[\W0]*)|[^0-9a-z]"

 

Powered by ExBB FM 1.0 RC1