$test = "!!! sdfsdf sd$$$fdf ___";
$test = str_replace(' ', '_', $test); // Turn all spaces into underscores.
echo $test."<br />"; // Output: !!!___sdfsdf___sd$$$fdf______
$test = preg_replace('/[^a-zA-Z0-9_-]/', '-', $test); // Replace anything that isn't alphanumeric, or _-, with a hyphen.
echo $test."<br />"; // Output: !!!___sdfsdf___sd---fdf______
$test = preg_replace('/([_-])\1+/', '$1', $test); // Reduce multiple _- in a row to just one.
echo $test."<br />"; // Output: !_sdfsdf_sd-fdf_
The above code is what I currently have, what I'm trying to figure out the REGEX for is how to cut off any non-alphanumeric characters off the ends. So turning the final output from "!_sdfsdf_sd-fdf_" to "sdfsdf_sd-fdf".
$clean = preg_replace('~(^[^a-z0-9]+)|([^a-z0-9]+$)~i', '', $str);
You can use trim() :
$test = trim($test, '_-');
echo $test;
The "!" won't make it past the first regular expression.
You can replace your whole code with this:
$test = preg_replace('/[^a-zA-Z0-9]+/', '_', $test);
$test = trim($test, '_');
The first will replace all occurrences of one or more illegal characters with _
and the second will rmove any remaining _
from the start and end.
[a-zA-Z0-9].*[a-zA-Z0-9]
含义:读取任何字母数字字符,然后尽我们所能读取尽可能多的东西,确保最后可以得到至少一个字母数字字符。
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.