正则表达式问题与mb_ereg_replace

时间:2015-10-28 10:47:24

标签: php regex

我有这段代码,应该从字符串中删除非字母字符:

<?php
$text = 'Random -text! and a word with many ppppps';
$text = mb_ereg_replace('[^\p{L} ]', ' ', $text);
echo $text;
?>

当我在localhost(php 5.6)上运行它时,返回我期望的内容:

Random text and a word with many ppppps

但是在godaddy(php 5.3)上它只返回:

ppppp 

似乎与'[^\p{L} ]'中的正则表达式mb_ereg_replace有关,但我无法弄清楚是什么。

1 个答案:

答案 0 :(得分:1)

根据你的评论,很明显godaddy服务器没有设置为使用UTF8编码。所以,在添加

之后
ini_set('default_charset', 'UTF-8');

你可以使用

$text = preg_replace('/[^\p{L}\p{M} ]/u', ' ', $text);

请参阅IDEONE demo,证明它适用于UTF8。