删除从PHP字符串中的所有标点符号的友好的搜索引擎优化网址(Remove all punctuati

2019-10-19 16:17发布

所以,我看到一吨在本站的“解决方案”,但没有人似乎为我工作充分。 我想从一个职位名称去除所有的标点,以使系统可以动态创建每篇文章的网址。 我发现大卫·沃尔什的文章,就如何可以做到这一点教程一步提供了一步。 然而,并非一切都被剥夺。 下面是文章(以防万一)链接: http://davidwalsh.name/php-seo 。

下面是我修改删除所有标点的代码:

$return = trim(preg_replace('/[^a-z0-9]+/i'," ", strtolower($post_name)));

下面是一个例子职位名称: 测试的,这更多!

结果当我赞同的网址:测试-039-S-这个放大器,more.php

我不知道为什么它保存的HTML代码的符号和单引号。 有任何想法吗?!?

Answer 1:

看起来像数据通过运行htmlspecialchars()htmlentities()的地方。 撤消与htmlspecialchars_decode()html_entity_decode()第一:

$return = trim(preg_replace('/[^a-z0-9]+/i'," ", strtolower(htmlspecialchars_decode($post_name))));


Answer 2:

/**
  * prepares a string optimized for SEO
  * @see https://blog.ueffing.net/post/2016/03/14/string-seo-optimieren-creating-seo-friendly-url/
  * @param String $string 
  * @return String $string SEO optimized String
  */
function seofy ($sString = '')
{
    $sString = preg_replace('/[^\\pL\d_]+/u', '-', $sString);
    $sString = trim($sString, "-");
    $sString = iconv('utf-8', "us-ascii//TRANSLIT", $sString);
    $sString = strtolower($sString);
    $sString = preg_replace('/[^-a-z0-9_]+/', '', $sString);

    return $sString;
}

// Example
seofy("Testing's, this & more!"); // => testing-s-this-more

@看到

  • https://blog.ueffing.net/post/2016/03/14/string-seo-optimieren-creating-seo-friendly-url/
  • http://php.net/manual/en/function.preg-replace.php#122374


文章来源: Remove all punctuation from php string for friendly seo url
标签: php regex url seo