标签: strtr

何时使用strtr vs str_replace?

我很难理解什么时候strtr会更好,str_replace反之亦然.看起来使用任一函数都可以获得完全相同的结果,尽管替换子串的顺序是相反的.例如:

echo strtr('test string', 'st', 'XY')."\n";
echo strtr('test string', array( 's' => 'X', 't' => 'Y', 'st' => 'Z' ))."\n";
echo str_replace(array('s', 't', 'st'), array('X', 'Y', 'Z'), 'test string')."\n";
echo str_replace(array('st', 't', 's'), array('Z', 'Y', 'X'), 'test string');
Run Code Online (Sandbox Code Playgroud)

这输出

YeXY XYring
YeZ Zring
YeXY XYring
YeZ Zring
Run Code Online (Sandbox Code Playgroud)

除了语法之外,使用one还是其他有什么好处吗?任何人不足以达到预期结果的情况?

php string strtr str-replace

81
推荐指数
3
解决办法
3万
查看次数

PHP:用UTF-8字符串中最接近7位ASCII等效的变音符号替换

我想要做的是从字符串中删除所有重音符号和变音符号,将"lärm"变为"larm"或将"andré"变为"andre".我试图做的是utf8_decode字符串,然后使用strtr,但由于我的源文件保存为UTF-8文件,我不能输入所有变音符号的ISO-8859-15字符 - 编辑器插入UTF-8字符.

显然,一个解决方案是拥有一个ISO-8859-15文件的包含,但必须有一个更好的方法,而不是另一个必需的包含?

echo strtr(utf8_decode($input), 
           'ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ',
           'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy');
Run Code Online (Sandbox Code Playgroud)

更新:也许我尝试做的事情有点不准确:我实际上并不想删除变音符号,而是将它们替换为最接近的"单字符ASCII"等价物.

php utf-8 diacritics strtr

44
推荐指数
3
解决办法
4万
查看次数

7
推荐指数
1
解决办法
8100
查看次数

在PHP中替换表情符号的更好方法?

现在我正在使用此函数表情符号:

function emoticons($text) {
        $icons = array(
                ':)'    =>  '<img src="/images/blank.gif" alt="smile" class="icon_smile" />',
                ':-)'   =>  '<img src="/images/blank.gif" alt="smile" class="icon_smile" />',
                ':D'    =>  '<img src="/images/blank.gif" alt="smile" class="icon_laugh" />',
                ':d'    =>  '<img src="/images/blank.gif" alt="laugh" class="icon_laugh" />',
                ';)'    =>  '<img src="/images/blank.gif" alt="wink" class="icon_wink" />',
                ':P'    =>  '<img src="/images/blank.gif" alt="tounge" class="icon_tounge" />',
                ':-P'   =>  '<img src="/images/blank.gif" alt="tounge" class="icon_tounge" />',
                ':-p'   =>  '<img src="/images/blank.gif" alt="tounge" class="icon_tounge" />',
                ':p'    =>  '<img src="/images/blank.gif" alt="tounge" class="icon_tounge" />',
                ':('    =>  '<img src="/images/blank.gif" alt="sad face" class="icon_sad" />',
                ':o'    => …
Run Code Online (Sandbox Code Playgroud)

php strtr emoticons

6
推荐指数
1
解决办法
1万
查看次数

PHP:使用strtr转换字符时出现问题

我从php.net获得了以下代码:

$GLOBALS['normalizeChars'] = array(
'Š'=>'S', 'š'=>'s', 'Ð'=>'Dj','Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A',
'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I',
'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U',
'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss','à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a',
'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i',
'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u',
'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y', 'ƒ'=>'f');
$string = strtr($string, $GLOBALS['normalizeChars']);
Run Code Online (Sandbox Code Playgroud)

字符串"åäö"当然应该给我"aao",但我得到"aaa".这让我感到非常沮丧,因为我已经挣了好几个小时 - 我的意思是,感觉就像没有多少可能是错的.

我已经尝试了setlocale(LC_CTYPE,'en_US.utf8')和setlocale(LC_CTYPE,'sv_SE.utf8'),甚至尝试删除代码并使用str_replace('ö','o',$ string)但没有什么工作.

什么可能是错的?

php strtr

5
推荐指数
1
解决办法
1806
查看次数

C#中strtr php函数的转换

需要将此 php 代码转换为 C#

strtr($input, '+/', '-_')
Run Code Online (Sandbox Code Playgroud)

是否存在等效的 C# 函数?

php c# asp.net replace strtr

5
推荐指数
1
解决办法
1658
查看次数

strtr功能不起作用

你好吗.希望很好......

我遇到以下代码的问题.该strtr功能无效.它没有输出任何东西......

if ($translate == "DrChatrikWeb") {
$convertarray = array(
"~" => "~",
"!" => "!",
"@" => "@",
"#" => "#",
"$" => "$",
"%" => "%",
"^" => "^",
"&" => "&",
"*" => "*",
"(" => "(",
")" => ")",
"_" => "_",
"+" => "+",
"`" => "`",
"1" => "1",
"2" => "2",
"3" => "3",
"4" => "4",
"5" => "5",
"6" => "6",
"7" => "7",
"8" => "8",
"9" => …
Run Code Online (Sandbox Code Playgroud)

php replace strtr

3
推荐指数
1
解决办法
1208
查看次数

PHP不区分大小写的strtr

我在哪里可以找到不区分大小写的版本strtr

strtr 超载,我说的是以下一个

string strtr ( string $str , array $replace_pairs )
Run Code Online (Sandbox Code Playgroud)

php arrays strtr case-insensitive

2
推荐指数
1
解决办法
2076
查看次数

为什么strpos会返回不同的结果?

我有以下函数将特殊重音字符(如ă)转换为字符串中的a-zA-Z字符:

function tradu($sir){

        $sir_aux = $sir;

        $diacritice = array("?"=>"a", "â"=>"a", "î"=>"i", "Î"=>"I", "?"=>"s", "?"=>"s", "?"=>"t", "?"=>"t");

        for($i=0; $i<strlen($sir_aux); $i++){

            foreach($diacritice as $key=>$value){
                if($sir_aux[$i]==$key)
                    $sir_aux[$i]=$value;
            }
        }

        $sir_aux = strtr($sir, $diacritice);

        return $sir_aux;
    }   
Run Code Online (Sandbox Code Playgroud)

假设a是原始字符串,a_translated是翻译后的字符串.

当我使用strpos(a, string_to_find)和时strpos(a_translated, string_to_find),返回的值是不同的.我也检查了strlen(a),strlen(a_translate)他们给出了不同的结果. 为什么会这样?

我需要这个解释,因为我需要搜索带有重音的字符串是否包含给定的普通字符串(没有重音符号),但我必须从原始字符串返回该部分,即使它包含重音符号也是如此.

我尝试了什么我 翻译原始字符串并找到search_string开始的位置,然后我substr(ORIGINAL_STRING, position).这是我注意到位置不对应的地方.

例如:原来的字符串:Universitatea一个FOST înfiinţată在2001年pentru一个oferi ...搜索的字符串:infiintata期望的结果:înfiinţată 2001年pentru一个oferi ...

php strtr strpos

2
推荐指数
1
解决办法
176
查看次数

Strtr需要一个数组作为第二个参数?

我正在调用代码

strtr($somevars['thisvar'], "abc")
Run Code Online (Sandbox Code Playgroud)

哪里$somevars['thisvar']包含一个字符串.

它给了我

Warning:  strtr() [function.strtr]: The second argument is not an array
Run Code Online (Sandbox Code Playgroud)

为什么?

php string strtr

0
推荐指数
1
解决办法
1900
查看次数

用strtr同时替换字母

我正在尝试用strtr同时替换字符串,但我遇到了一个问题.如果同时更换的字母与另一个同时被替换的字母相邻,则不会替换第一个字母后面的字母.我该怎么做才能解决这个问题?谢谢.

$text = " no bacon cats nobody ";
$text = strtr($text, array(" no " => " bacon ", " bacon " => " no ", " cats " => " dogs "));
echo $text;
Run Code Online (Sandbox Code Playgroud)

预期成绩

bacon no dogs nobody
Run Code Online (Sandbox Code Playgroud)

实际结果

bacon bacon dogs nobody
Run Code Online (Sandbox Code Playgroud)

PS:我必须确保这些词不是另一个词的一部分.这就是为什么白色空间在那里.例如,单词"no"是"nobody"的一部分,如果你在字符串中替换了所有"no",它也会替换像"nobody"这样的单词;

php regex replace strtr preg-replace

0
推荐指数
1
解决办法
174
查看次数