我试图剥离所有特殊字符并在所有单词之间添加一个短划线。
示例:
示例文字: 如何制作东西,其他东西和其他东西。
示例字符串:
$string = "How to make something, something else, and other stuff.";
它的外观示例: 如何对化妆的东西,东西,别的,和其他-东西
我需要一个能去除所有特殊字符的函数,但也要在每个单词之间添加短划线“但也不要在最后一个单词后添加短划线”。任何人都有我应该怎么做的想法?我认为这很简单。可能是一个带有正则表达式的preg_replace,可以解决特殊字符问题,但添加破折号是我感到困惑的地方,不知道该怎么做。
答案 0 :(得分:5)
假设字符串在utf-8中:
$string = 'Höw to máke sòmething, something else, and other stuff';
$string = preg_replace('/[^a-z0-9]+/i','-',
iconv('UTF-8','ASCII//TRANSLIT',$string));
$string = trim($string,'-');
答案 1 :(得分:2)
答案 2 :(得分:1)
我会在空格处爆炸字符串然后用这样的短划线破坏它:
$string = trim($string); // removes white space from ends
$string = preg_replace("/[^A-Za-z0-9]/","",$string); // removes special chars
$string = explode(' ', $string); // separates the words where there are spaces
$string = implode('-', $string); // puts the words back into a sentence separated by dashes
echo $string;
这显然可以浓缩 - 但为了简单起见,这些是所需的步骤。