qwe*_*rty 5 php regex string split numbers
考虑以下:
700italic
regular
300bold
300bold900
Run Code Online (Sandbox Code Playgroud)
所有这些都是不同的示例,每次只执行一行.
预期结果:
// 700italic
array(
0 => 700
1 => itailc
)
// regular
array(
0 => regular
)
// 300bold
array(
0 => 300
1 => bold
)
// 300bold900
array(
0 => 300
1 => bold
2 => 900
)
Run Code Online (Sandbox Code Playgroud)
我做了以下:
(\d*)(\w*)
Run Code Online (Sandbox Code Playgroud)
但这还不够.它有点工作,当我只有两个"部分"(数字|字符串或字符串|数字),但如果我添加第三个"段",我不会工作.
有什么建议?
你可以preg_split改用.然后,您可以使用与单词和字母之间的位置匹配的外观:
$result = preg_split('/(?<=\d)(?=[a-z])|(?<=[a-z])(?=\d)/i', $input);
Run Code Online (Sandbox Code Playgroud)
请注意,\w除了字母之外,还匹配数字(和下划线).
替代方法(使用匹配函数)是每次匹配preg_match_all仅使用和匹配数字或字母:
preg_match_all('/\d+|[a-z]+/i', $input, $result);
Run Code Online (Sandbox Code Playgroud)
现在,您将获得生成数组中每个所需元素的单个匹配,而不是捕获.但是你最后只想要阵列,所以你并不关心它们的来源.
| 归档时间: |
|
| 查看次数: |
4301 次 |
| 最近记录: |