2013-05-08 200 views
0

我想格式化一些号码牌 - 我需要查找字符串中的最后一位数字并在其后添加空格,例如,查找字符串中最后一位数字的位置

T4MAX = T4 MAX 
T53TES = T53 TES 

我假设我将不得不使用的preg_replace - 我已经试过下面找到最后一位数字的字符串中的位置,但它返回一个空数组。

preg_match('/(0-9])/', $plate, $matches, PREG_OFFSET_CAPTURE); 

任何想法?

回答

3

这很简单:

$str = 'T4MAX'; 

$str_with_space = preg_replace('~\d(?=\D*$)~', '$0 ', $str); 

在线演示:http://ideone.com/Mqqqsh

正则表达式的解释:

~\d(?=\D*$)~表现手法 - 以后内容的任何数字\d是一个不能用的末尾一个数字\D串。

+0

谢谢 - 完美的工作,如果我想切换它,所以在第一个数字前加一个空格,我该怎么做? – Ryan 2013-05-08 23:47:34

+0

@Ryan Pilbeam:'(?<=^\ D *)\ d' - 这是一个正则表达式 – zerkms 2013-05-08 23:49:44

+0

我试过这样做: 'var_dump(preg_replace('〜(?<=^\ D *) \ d〜','$ 0',$ plate));' 但是,假设我做错了什么,我得到这个错误:编译失败:lookbehind断言不是固定长度在偏移量8 – Ryan 2013-05-08 23:57:16

相关问题