什么正则表达式?

时间:2011-07-07 12:34:39

标签: php regex preg-replace

我尝试写一个好的正则表达式,但即使有文档,我也不知道如何编写好的正则表达式。

我有很多字符串,我需要清理一些字符。

例如:

  

70%coton / 30%LINé

应该成为:

  

70%COTON-30%LINE

事实上:

  • /\#必须由-

  • 替换
  • 必须删除空格

  • 必须更换重音字符

我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

setlocale(LC_ALL, "en_US.UTF8");

$string = '70%COTON/ 30%LINé';
$string = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
$string = preg_replace("#[^\w\%\s]#", "", $string);
$string = str_replace(' ', '-', $string);
$string = preg_replace('#(-){2,}#', ' ', $string);

echo strtoupper($string); // 70%COTON-30%LINE

答案 1 :(得分:1)

我会使用iconv()作为重音:

$text = 'glāžšķūņu rūķīši';
$text = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $text);
echo $text; // outputs "glazskunu rukisi"

要完成剩下的工作,我会添加strtoupper()来更改字母大小写,str_replace()删除空格,preg_replace()将这些小字符转换为-

$text = 'glāžšķūņu rūķīši / \\ # test';
$text = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $text);
$text = strtoupper($text);
$text = str_replace(' ', '', $text);
$text = preg_replace('#[/\\#\\\\]+#', '-', $text);
echo $text; // outputs "GLAZSKUNURUKISI-TEST"