PHP Slug 生成函数提供不正确的输出
PHP Slug Generation Function Giving Improper Output
我正在使用下面的代码来获取我从 ajax 调用中发送的正确的 slug。
$slug = strtolower(trim(preg_replace('/[^A-Za-z]+/', '-', $_POST['slug'])));
但是,正在发生的事情是。如果来自 ajax 请求,我得到任何 slug-like
鼻涕虫:top-5-ways--to-avoid-list-
我想要 trim 不需要的 -
连字符和 slug 中的任何数值,并想要下面的 slug
鼻涕虫:top-ways-to-avoid-list
我无法理解代码有什么问题。
您可以再次 trim 删除字符串两边多余的“-”。
$slug = strtolower(trim(preg_replace('/[^A-Za-z]+/', '-', 'top-5-ways--to-avoid-list-')));
echo trim($slug, '-');
结果:顶级避免方法列表
以这种方式对您的字符串进行 slugify,它会删除不需要的字符,包括 -
。
trim() 作为第二个参数所有你想被剥离的字符。所以看看注释行 THIS WILL FIX YOUR EXISTING PROBLEM
<?php
function slugify($string, $delimiter = '-'){
$clean = preg_replace("/[^a-zA-Z\/_|+ -]/", '', $string);
$clean = strtolower($clean);
$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
$clean = trim($clean, $delimiter); // THIS WILL FIX YOUR EXISTING PROBLEM
return $clean;
}
echo slugify('-Top ways-to avoid list-');
echo PHP_EOL;
echo slugify('top 5 ways to get in top');
?>
输出:
top-ways-to-avoid-list
top-ways-to-get-in-top
OR 使用您现有的代码修剪多个字符 -
或空格
<?php
echo strtolower(trim(preg_replace('/[^A-Za-z]+/', '-', '-Top ways-to avoid list-'),'- '));
echo PHP_EOL;
echo strtolower(trim(preg_replace('/[^A-Za-z]+/', '-', 'top 5 ways to get in top'),'- '));
?>
我正在使用下面的代码来获取我从 ajax 调用中发送的正确的 slug。
$slug = strtolower(trim(preg_replace('/[^A-Za-z]+/', '-', $_POST['slug'])));
但是,正在发生的事情是。如果来自 ajax 请求,我得到任何 slug-like
鼻涕虫:top-5-ways--to-avoid-list-
我想要 trim 不需要的 -
连字符和 slug 中的任何数值,并想要下面的 slug
鼻涕虫:top-ways-to-avoid-list
我无法理解代码有什么问题。
您可以再次 trim 删除字符串两边多余的“-”。
$slug = strtolower(trim(preg_replace('/[^A-Za-z]+/', '-', 'top-5-ways--to-avoid-list-')));
echo trim($slug, '-');
结果:顶级避免方法列表
以这种方式对您的字符串进行 slugify,它会删除不需要的字符,包括 -
。
trim() 作为第二个参数所有你想被剥离的字符。所以看看注释行 THIS WILL FIX YOUR EXISTING PROBLEM
<?php
function slugify($string, $delimiter = '-'){
$clean = preg_replace("/[^a-zA-Z\/_|+ -]/", '', $string);
$clean = strtolower($clean);
$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
$clean = trim($clean, $delimiter); // THIS WILL FIX YOUR EXISTING PROBLEM
return $clean;
}
echo slugify('-Top ways-to avoid list-');
echo PHP_EOL;
echo slugify('top 5 ways to get in top');
?>
输出:
top-ways-to-avoid-list
top-ways-to-get-in-top
OR 使用您现有的代码修剪多个字符 -
或空格
<?php
echo strtolower(trim(preg_replace('/[^A-Za-z]+/', '-', '-Top ways-to avoid list-'),'- '));
echo PHP_EOL;
echo strtolower(trim(preg_replace('/[^A-Za-z]+/', '-', 'top 5 ways to get in top'),'- '));
?>