preg_replace无法正常工作

preg_replace无法正常工作

问题描述:

I am running the following code:

$filename = 'bla.mp4';
    echo preg_replace('/\.(m4a|wav|ogg|flac|avi|flv|mov|wmv|m3u|mid|wma|webm|mkv|asf|mp(\d+)|aif(?:f?)|3gp(?:p?)|mp(eg(\d+)?|g(\d+)?))/g', '', $filename);

However I get no output, surely it would echo 'bla' but it doesn't show anything.

PHP PCRE patterns do not support the g modifier, and as the manual states:

Spaces and newlines are ignored in modifiers, other characters cause error.

As an error is caused, preg_replace works as expected:

If matches are found, the new subject will be returned, otherwise subject will be returned unchanged or NULL if an error occurred.

You have probably disabled or suppressed warnings in your code, which you should never, ever do during development (and always in production). Check whether display_errors is enabled in your php.ini file, and/or whether you have any error_reporting(...) calls in your code.

That code gives Warning: preg_replace(): Unknown modifier 'g' in /home/abe/http/htdocs/tmp/test.php on line 3 for me. Works fine if I remove the trailing g.