我想使用正则表达式删除字符串中的所有内容,除了alpha和数字字符,并且我需要删除任何前导零。
下面的命令可以工作,但不能删除前导零
$string = '00000000A1234567890-=qwesss €#¢∞§¶¶•ªº– ≠≠rtyuuiop[]'';lkjhgfdsazxcvbnm,./';
$pattern = '/([^'da-z]/i)';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
如何更改模式以删除前导零?
这应该可以同时满足两个需求:
$string = '00000000A1234567890-=qwesss €#¢∞§¶¶•ªº– ≠≠rtyuuiop[]'';lkjhgfdsazxcvbnm,./';
$pattern = '/^0+|[^'dA-Za-z]+/';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
//=> 1234567890qwesssrtyuuioplkjhgfdsazxcvbnm
这个可以:
<?php
$string = '00000000A1234567890-=qwesss €#¢∞§¶¶•ªº– ≠≠rtyuuiop[]'';lkjhgfdsazxcvb00000nm,./';
$pattern = '#^(0*)|([^'da-z])#i';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
编辑
这个模式也可以简化为:
$pattern = '#^0+|'W#';
试一试:
$string = '00000000A1234567890-=qwesss €#¢∞§¶¶•ªº– ≠≠rtyuuiop[]'';lkjhgfdsazxcvbnm,./';
$pattern = '/(['W])/i';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
如果你还想删除0,模式是:
$pattern = '/(['W0])/i';