Php str_replace()不使用重音替换字符
我有一个很长的html字符串,它由希腊语和英语文本组成,大多数单词周围都有html标记。过去,我一直成功地使用下面的函数从文本中删除希腊口音,使其漂亮地大写 但是,在此文本中,在某些字符之后,替换将停止,文本将以重音返回。我也尝试了一些其他的功能,我在网上找到的,但没有运气 有什么帮助吗 我使用的函数是:Php str_replace()不使用重音替换字符,php,html,string,str-replace,Php,Html,String,Str Replace,我有一个很长的html字符串,它由希腊语和英语文本组成,大多数单词周围都有html标记。过去,我一直成功地使用下面的函数从文本中删除希腊口音,使其漂亮地大写 但是,在此文本中,在某些字符之后,替换将停止,文本将以重音返回。我也尝试了一些其他的功能,我在网上找到的,但没有运气 有什么帮助吗 我使用的函数是: public static function stripAccents($str) { $a = array('ά','έ','ή','ί','ύ','ό','ώ','ς','Ά','
public static function stripAccents($str) {
$a = array('ά','έ','ή','ί','ύ','ό','ώ','ς','Ά','Έ','Ή','Ί','Ύ','Ό','Ώ');
$b = array('α','ε','η','ι','υ','ο','ω','Σ','Α','Ε','Η','Ι','Υ','Ο','Ω');
return str_replace($a, $b, $str);
}
文本示例如下:
<div class="menu-page">
<h3>DESSERTS / ΕΠΙΔΟΡΠΙΑ</h3>
<h4>GOAT CHEESE ICE CREAM (N)</h4>
<p class="price">€7,50</p>
<p>Παγωτό από κατσικίσιο τυρί με μαρμελάδα ντομάταΣ & κρέμα λεμονιού</p>
<p>With tomato marmalade & lemon cream</p>
<div class="clearfix"></div>
<h4>MOCHA A LA PALAIA</h4>
<p class="price">€8,50</p>
<p>Παγωτό καφέ, βανίλιαΣ & Ιταλική μαρέγκα</p>
<p>Coffee and vanilla ice cream & Italian meringue<p>
<div class="clearfix"></div>
<h4>THE TRAIL OF CHOCOLATE (N)</h4>
<p class="price">€9,50</p>
<p>Εύπλαστη σοκολάτα & υφέΣ από πορτοκάλι</p>
<p>Chocolate and different orange textures</p>
<div class="clearfix"></div>
<h4>CANNOLO</h4>
<p class="price">€9,50</p>
<p>Ελαφρύ μπισκότο γεμιστό με σοκολάτα και passion fruit sorbet</p>
<p>Chocolate cannolo with passion fruit sorbet</p>
<div class="clearfix"></div>
<h4>AUBERGINE TIRAMISU</h4>
<p class="price">€12,00</p>
<p>Με μουΣ μελιτζαναΣ</p>
<p>With eggplant mousse</p>
</div>
甜点/Ε∏Η∏Α
山羊奶酪冰淇淋(N)
7,50欧元
∏αγωτόαπόκατσικίσικοοτορ́μεμρμελάΔαντμάτα∑κρεμλμεμο
配番茄果酱和柠檬奶油
摩卡帕莱亚酒店
8,50欧元
∏αγωτόκαφέ,βανίλια∑和∏ταλικημαρεγκα
咖啡、香草冰淇淋和意大利蛋白酥皮
巧克力的痕迹(N)
9,50欧元
Έπλαστησοκολάτα&νφέ∑από́πρτοκάλι
巧克力和不同的橙色质地
大炮
9,50欧元
西番莲果冰糕
巧克力大炮配百香果冰糕
提拉米苏茄子
12,00欧元
εμον∑μελιτζανα∑
茄子慕斯
这不起作用,因为它们是不同的字符。例如,如果您查看ό
在您的功能中,它是:
CE BF CC 81 //ό
但在您的字符串中,您有:
CF 8C //ό
因此,请确保在字符串和函数中使用相同的字符以下代码可以正常工作,并对其进行了测试
函数条带重音($str){
$a=数组('ά'、'έ'、'ή'、'ί'、'ν́'、'ό'、'ώ'、'ε'、'έ'、'ή'、'γ'、'γ'、'γ'、'γ');
$b=数组('α'、'ε'、'η'、'Γ'、'ο'、'ω'、∑'、'Α'、'Ε'、'Η'、'Υ'、'Υ'、'Ω');
返回stru替换($a,$b,$str);
}
$content='甜点/Ε∏Ε∏Η∏Α..';
回声带口音($content);
实际上,字符串的大小并不重要。
我发现的一点是“复制并粘贴”希腊字符的行为
当我第一次复制您的代码并运行时,它不起作用。
然后,我尝试将源文本中所有重音字符复制到您的重音数组中,然后开始工作
请检查。nice检查关于的讨论,其中包括不同的编码问题
function stripAccents($str) {
$a = array('ά','έ','ή','ί','ύ','ό','ώ','ς','Ά','Έ','Ή','Ί','Ύ','Ό','Ώ');
$b = array('α','ε','η','ι','υ','ο','ω','Σ','Α','Ε','Η','Ι','Υ','Ο','Ω');
return str_replace($a, $b, $str);
}
$content = '<div class="menu-page"> <h3>DESSERTS / ΕΠΙΔΟΡΠΙΑ</h3>.....';
echo stripAccents($content);