str_replace()不会用重音

时间:2015-09-01 13:52:06

标签: php html string str-replace

我有一个非常长的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>

2 个答案:

答案 0 :(得分:6)

它不起作用,因为它们是不同的角色。如果你在ό找一个例子。

在你的功能中它是:

CE BF CC 81 //ό

但是在你的字符串中你有:

CF 8C //ό

因此请确保在字符串和函数中使用相同的字符

答案 1 :(得分:3)

以下代码有效,在http://www.writephponline.com/

上进行了测试
function stripAccents($str) {
    $a = array('ά','έ','ή','ί','ύ','ό','ώ','ς','Ά','Έ','Ή','Ί','Ύ','Ό','Ώ');
    $b = array('α','ε','η','ι','υ','ο','ω','Σ','Α','Ε','Η','Ι','Υ','Ο','Ω');
    return str_replace($a, $b, $str); 
}

$content = '<div class="menu-page"> <h3>DESSERTS / ΕΠΙΔΟΡΠΙΑ</h3>.....';

echo stripAccents($content);

字符串的大小实际上并不重要。 我发现的重点是&#34;复制和粘贴&#34;希腊人物。

当我第一次复制代码并运行时,它不起作用。 然后我尝试将源文本中的所有重音字符复制到您的重音数组中,然后它开始起作用。

请检查。