在我的文字中,我有这个输出:
Åapat
我想搜索'Å',注意Å+空格。并将其转换为'Š'。
所以基本上我想找到这个字母后跟空格,并用一个字母替换它,没有空格。
字符串替换不能这样做,而且我对正则表达式不是很好,我试过这个但它不起作用:
$return = preg_replace('/[Å\s]/', 'Š', $return);
有人能帮助我吗?
注意:这个单词“Åapat”不一定是在句子的开头,大部分时间它都在中间的某个地方。
答案 0 :(得分:3)
$re = "/Å\\s/m";
$str = "Å apat";
$subst = "Š";
$result = preg_replace($re, $subst, $str);
这应该适合你。See demo
答案 1 :(得分:1)
您似乎正在尝试使用字符串替换来解决编码问题(可能只是显示问题)。
这不是要走的路!
让我们看看会发生什么:
如果您使用十六进制查看器查看字符串,您将找到此十六进制序列:C5 A0
但是根据上下文,这个序列可以用两种不同的方式解释:
C5 A0 =Š(utf8编码中的C5A0)=Å(unicode中的C5)+ NO-BREAK SPACE(unicode中的A0)
所以似乎问题是你的字符串显示为一系列unicode代码点而不是utf8编码的字符串。
我认为问题来自没有良好编码信息的html页面。尝试在头标记之间添加有关页面编码的信息:
<meta charset="UTF-8"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
答案 2 :(得分:0)
这可以帮到你:
$result = preg_replace('/Å /', 'Š', $text);
你的正则表达式[Å\s]
的作用是:匹配一个字符Å或任何空白字符并用Š