str_replace() 不替换带重音的字符
str_replace() does not replace characters with accent
我有一个很长的 html 字符串,它由希腊语和英语文本组成,大多数单词都带有 html 标签。我过去曾成功地使用下面的函数从文本中删除希腊语重音符号,使其大写。
然而,在这段文字中,在某些字符之后,替换停止发生,并且文字 returns 带有重音符号。我也尝试了一些我在网上找到的其他功能,但没有成功。
有什么帮助吗?
我使用的函数是:
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>
不行,因为它们是不同的字符。例如,如果您查看 ό
.
在你的函数中是:
CE BF CC 81 //ό
但是在你的字符串中你有:
CF 8C //ό
因此请确保您在字符串和函数中使用相同的字符
以下代码有效,已在 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);
字符串的大小实际上并不重要。
我发现的重点是 "copy and paste" 希腊字符的动作。
当我第一次复制你的代码并运行时,它不起作用。
然后我尝试将源文本中的所有重音字符复制到您的重音数组中,然后它开始工作了。
请查收。
我有一个很长的 html 字符串,它由希腊语和英语文本组成,大多数单词都带有 html 标签。我过去曾成功地使用下面的函数从文本中删除希腊语重音符号,使其大写。
然而,在这段文字中,在某些字符之后,替换停止发生,并且文字 returns 带有重音符号。我也尝试了一些我在网上找到的其他功能,但没有成功。
有什么帮助吗?
我使用的函数是:
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>
不行,因为它们是不同的字符。例如,如果您查看 ό
.
在你的函数中是:
CE BF CC 81 //ό
但是在你的字符串中你有:
CF 8C //ό
因此请确保您在字符串和函数中使用相同的字符
以下代码有效,已在 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);
字符串的大小实际上并不重要。 我发现的重点是 "copy and paste" 希腊字符的动作。
当我第一次复制你的代码并运行时,它不起作用。 然后我尝试将源文本中的所有重音字符复制到您的重音数组中,然后它开始工作了。
请查收。