无法删除一些简单的重音

时间:2016-03-17 23:11:08

标签: php

我正在尝试从某些字符串中删除重音符号。我只需要用e,a,i和o替换以下内容:é,á,í和ó。 我花了至少一个小时的谷歌搜索,并尝试了我能找到的每一种方法,其中许多来自这个网站。

我尝试了iconv("utf-8", "ascii//TRANSLIT", $input);方法,preg_replacestr_replace,Wordpress方法和其他一些方法。没有任何内容被替换,或者我得到habláis变成habl'aishabl?is的结果。

我将列出我尝试过的最后一种方法。如果有人能给我一个有效的方法,我会非常感激。我只需要替换那些愚蠢的4个字符。在这里疯了!

此方法将habláis变为habl?is

    $newstring = strtr(utf8_decode($string), utf8_decode('áéíó'), 'aeio');

1 个答案:

答案 0 :(得分:0)

假设你有UTF-8编码(否则,请参阅你问题的评论),我建议你尝试str_replace($needle, $replacement, $haystack)。此函数接受 needle replacement 的数组,它们可以完美地满足您的需求。

我还没有对此进行过测试,但是以下内容应该有效:

<?php
$aReplacements = array('a', 'e', 'i', 'o');
$aNeedles = array('á', 'é', 'í', 'ó');

$string = $_GET['please_replace_this_assignment_with_your_string_source'];

$converted = str_replace($aNeedles, $aReplacements, $string); // Swap to non-accented versions

echo $converted; // Just here for testing. Do what you need to do with this variable.

?>