我正试图将一个标准的wordpress标题变成一个slug,使所有字符小写,用破折号替换空格,并删除标题中的所有"&"符号。
因此,让我们以这个标题为例:"身份和寻路"
这是我的PHP:
<?php
$title = get_the_title();
$lower = strtolower($title);
$noDash = str_replace(' ', '-', $lower);
$noAnd = str_replace('&', '', $noDash);
echo $noAnd;
?>
这将我的标题变成"身份-#038;-寻路"
小写字母的转换起了作用,但将"&"替换为nothing不起作用。它将"&"转换为HTML特殊字符。你知道我如何简单地用空白替换"&",同时删除后面的破折号,这样最终的标题就会是:"身份查找"吗?
如果你想要一个slug,有很多实用程序可以为你做这件事,但htmlentities或urlencode都不正确。条令1.2包括一个urlizer
类,该类具有一组静态函数,其中包括urilize
,它将以更健壮的方式(正确处理UTF-8和非重音等)实现您想要的行为
可以在这里找到
如果你想要不那么健壮但简单得多的东西:
function slugify($sluggable)
{
$sluggable = preg_replace("/[^a-zA-Z0-9'/_|+ -]/", '', $sluggable);
$sluggable = trim($sluggable, '-');
if( function_exists('mb_strtolower') ) {
$sluggable = mb_strtolower( $sluggable );
} else {
$sluggable = strtolower( $sluggable );
}
$sluggable = preg_replace("/['/_|+ -]+/", '-', $sluggable);
return $sluggable;
}
这将去掉非字母数字字符(也包括重音字符),并将空格、+符号和连字符变成连字符。
您可能在谈论蛞蝓,请参阅以下内容:
- Slug URL生成函数覆盖Ç
- 逃离并创建slug(以及其中链接的文章)的最佳方式
- 或任何以前链接的答案SEO友好链接,js和/或php剥离这里
使用str_replace,首先删除"(空格),然后删除"-",然后替换&带破折号。
$title = "Identity & Wayfinding";
$title = strtolower(str_replace(array(" ","-","&"),array("","","-"),$title));
echo $title; // returns: identity-wayfinding
Example@viper7.
这是我使用的函数。
function text_as_url($str='', $separator = 'dash', $lowercase = false){
if ($separator == 'dash'){
$search = '_';
$replace = '-';
} else {
$search = '-';
$replace = '_';
}
$trans = array(
''/' => '-',
'&'#'d+?;' => '-',
'&'S+?;' => '-',
''s+' => $replace,
'[^a-z0-9'-'._]' => '', // accents
$replace.'+' => $replace,
$replace.'$' => $replace,
'^'.$replace => $replace,
''.+$' => '-'
);
$str = strip_tags($str);
foreach ($trans as $key => $val){
$str = preg_replace("#".$key."#i", $val, $str);
}
if($lowercase === true){
$str = strtolower($str);
}
return trim(stripslashes($str));
}
使用此代码:
<?php
function create_slug($string){
$slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
$slug=ltrim($slug, "-");
$slug=rtrim($slug, "-");
return strtolower($slug);
}
echo create_slug('does this thing work or not');
//returns 'does-this-thing-work-or-not'
echo "<br />";
echo create_slug('"Identity & Wayfinding"');
?>
实际示例
当然,如果你想在Wordpress中使用这个功能,你只需要使用这个:
<?php sanitize_title( $title, $fallback_title ) ?>
其中,$title
是输入字符串&如果$title
为空,则$fallback_title
为默认值。点击此处阅读更多:Wordpress函数参考/Sanitize标题