如何在PHP Laravel中删除特殊字符,但字符“ñ/Ñ”和破折号“-”除外

时间:2019-12-10 02:21:42

标签: php laravel

我想删除字符串中的特殊字符,但保留“ñ/Ñ”和“-”。

所以,如果我有

»¿Antonio Ramon-Peñaą

结果将是:

Antonio Ramon-Peña

1 个答案:

答案 0 :(得分:0)

您可以使用PCRE动词来允许一组字符列表,如果匹配则忽略它。然后针对所有其他字符(因为它不是您关心的字符)将其删除。

preg_replace('/[\w\h-](*SKIP)(*FAIL)|./u', '', '»¿Antonio Ramon-Peñaą')

有关正则表达式的详细说明,请参见https://regex101.com/r/pCwGuy/1/。基本上[\w\h-]是任何水平空格,单词字符或连字符。在结束定界符之后的u修饰符将\w扩展为包括ascii集合之外的单词字符。 .是任何单个字符。

或者,您可以匹配所有有效字符,然后重新加入它们。

preg_match('/[\w\h-]+/u', '»¿Antonio Ramon-Peñaą', $match);
echo implode('', $match);