Php str_replace()不使用重音替换字符

Php str_replace()不使用重音替换字符,php,html,string,str-replace,Php,Html,String,Str Replace,我有一个很长的html字符串,它由希腊语和英语文本组成,大多数单词周围都有html标记。过去,我一直成功地使用下面的函数从文本中删除希腊口音,使其漂亮地大写 但是,在此文本中,在某些字符之后,替换将停止,文本将以重音返回。我也尝试了一些其他的功能,我在网上找到的,但没有运气 有什么帮助吗 我使用的函数是: public static function stripAccents($str) { $a = array('ά','έ','ή','ί','ύ','ό','ώ','ς','Ά','

我有一个很长的html字符串,它由希腊语和英语文本组成,大多数单词周围都有html标记。过去,我一直成功地使用下面的函数从文本中删除希腊口音,使其漂亮地大写

但是,在此文本中,在某些字符之后,替换将停止,文本将以重音返回。我也尝试了一些其他的功能,我在网上找到的,但没有运气

有什么帮助吗

我使用的函数是:

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);