如何删除所有非字母数字字符和前导零

时间:2014-07-17 11:07:03

标签: php regex preg-replace preg-match pcre

我想使用正则表达式删除字符串中的所有内容,除了字母和数字字符,我需要删除任何前导零。

以下有效,但不会删除前导零

$string = '00000000A1234567890-=qwesss     €#¢∞§¶¶•ªº–  ≠≠rtyuuiop[]\';lkjhgfdsazxcvbnm,./';

$pattern = '/([^\da-z]/i)';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);

如何更改模式以删除前导零?

3 个答案:

答案 0 :(得分:4)

这应该可以满足这两个要求:

$string = '00000000A1234567890-=qwesss     €#¢∞§¶¶•ªº–  ≠≠rtyuuiop[]\';lkjhgfdsazxcvbnm,./';
$pattern = '/^0+|[^\dA-Za-z]+/';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
//=> 1234567890qwesssrtyuuioplkjhgfdsazxcvbnm

答案 1 :(得分:0)

试一试:

$string = '00000000A1234567890-=qwesss     €#¢∞§¶¶•ªº–       ≠≠rtyuuiop[]\';lkjhgfdsazxcvbnm,./';

$pattern = '/([\W])/i';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);

如果你还想删除零模式:

$pattern = '/([\W0])/i';

答案 2 :(得分:0)

这个会起作用:

<?php
$string = '00000000A1234567890-=qwesss     €#¢∞§¶¶•ªº–  ≠≠rtyuuiop[]\';lkjhgfdsazxcvb00000nm,./';

$pattern = '#^(0*)|([^\da-z])#i';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);

修改

此模式也可简化为:

$pattern = '#^0+|\W#';