创建标题Slug时出错通知:iconv():检测到输入字符串中的非法字符

时间:2016-03-06 11:11:47

标签: php slug slugify

我使用Stackoverflow中的代码从字符串

创建标题slug
gulp.task("inject", function (cb) {
  gulp
    .src("src/client/app/**/*.spec.js")
    .pipe(debug())
    .pipe(filenames("inject"))
    .pipe(gulp.dest('dist'))
    .on("end", function () {
        filenames.get("inject").map(function(e){
            // do something
        });
        util.log("in end");
        cb();
    });
});

大多数字符串都能正常工作。但得到一些字符串,如“АзуриАзмар/ Azur et Asmar”。我现在应该改变什么?

function slugify($text)
{
 // replace non letter or digits by -
 $text = preg_replace('~[^\pL\d]+~u', '-', $text);

 // transliterate
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);

// remove unwanted characters
$text = preg_replace('~[^-\w]+~', '', $text);

// trim
 $text = trim($text, '-');

// remove duplicate -
$text = preg_replace('~-+~', '-', $text);

// lowercase
$text = strtolower($text);

if (empty($text))
{
  return 'n-a';
}

 return $text;
 } 

1 个答案:

答案 0 :(得分:2)

尝试更改

$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);

$text = iconv('utf-8', 'us-ascii//IGNORE', $text);