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


How can I remove all non alpha numeric characters and leading zeros

我想使用正则表达式删除字符串中的所有内容,除了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';