如何使用 preg_replace 在输出字符串中保留连字符
How to keep hyphen in output string with preg_replace
我有以下要求。
输入 ----------: z-edu-l1-^threat -emergency mk pl.jpg
必需 ----: z-edu-l1-_threat_-emergency_mk_pl.jpg
我使用以下
$input = 'z-edu-l1-^threat -emergency mk pl.jpg';
echo strtolower(preg_replace('/\W(?![^.-]*$)/', '_', trim($input)));
我得到以下输出
z_edu_l1__threat__emergency_mk_pl.jpg
我不想用下划线替换 - 符号。如何使用 preg_replace 在输出字符串中保留连字符?
您可以将 \W
替换为其取反字符 class 等效 [^\w]
并取反您需要保留的符号:
[^\w.-]
[^\w.-]
匹配任何非 letter/digit、_
、.
和 -
.
的字符
参见 PHP demo:
$input = 'z-edu-l1-^threat -emergency mk pl.jpg';
echo strtolower(preg_replace('/[^\w.-]/', '_', trim($input)));
// => z-edu-l1-_threat_-emergency_mk_pl.jpg
$input = "z-edu-l1-^threat -emergency mk pl.jpg";
$output = str_replace(["^", " "], "_", $input);
echo $output;
//output
//z-edu-l1-_threat_-emergency_mk_pl.jpg
[^something] 将找到除 {something} 之外的匹配项
\w -> 字母表
[^\w.-] 将找到除字母、句点和连字符以外的任何内容,并将其替换为下划线。
$input = 'z-edu-l1-^threat -emergency mk pl.jpg';
echo strtolower(preg_replace('([^\w.-])', '_', trim($input)));
看直播demo here
我有以下要求。
输入 ----------: z-edu-l1-^threat -emergency mk pl.jpg
必需 ----: z-edu-l1-_threat_-emergency_mk_pl.jpg
我使用以下
$input = 'z-edu-l1-^threat -emergency mk pl.jpg';
echo strtolower(preg_replace('/\W(?![^.-]*$)/', '_', trim($input)));
我得到以下输出
z_edu_l1__threat__emergency_mk_pl.jpg
我不想用下划线替换 - 符号。如何使用 preg_replace 在输出字符串中保留连字符?
您可以将 \W
替换为其取反字符 class 等效 [^\w]
并取反您需要保留的符号:
[^\w.-]
[^\w.-]
匹配任何非 letter/digit、_
、.
和 -
.
参见 PHP demo:
$input = 'z-edu-l1-^threat -emergency mk pl.jpg';
echo strtolower(preg_replace('/[^\w.-]/', '_', trim($input)));
// => z-edu-l1-_threat_-emergency_mk_pl.jpg
$input = "z-edu-l1-^threat -emergency mk pl.jpg";
$output = str_replace(["^", " "], "_", $input);
echo $output;
//output
//z-edu-l1-_threat_-emergency_mk_pl.jpg
[^something] 将找到除 {something} 之外的匹配项 \w -> 字母表 [^\w.-] 将找到除字母、句点和连字符以外的任何内容,并将其替换为下划线。
$input = 'z-edu-l1-^threat -emergency mk pl.jpg';
echo strtolower(preg_replace('([^\w.-])', '_', trim($input)));
看直播demo here