Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择和替换非ASCII字符_Php_Utf 8_Str Replace_Replace - Fatal编程技术网

Php 选择和替换非ASCII字符

Php 选择和替换非ASCII字符,php,utf-8,str-replace,replace,Php,Utf 8,Str Replace,Replace,我编写了一个简单的函数来替换非ASCII土耳其字符 function url_cevir($yazi) { $yazi = trim($yazi); $eski = array('ü','Ü','ö','Ö','ş','Ş','ç','Ç','ı','İ','ğ','Ğ',' '); $yeni = array('%C3%BC','%C3%9C','%C3%B6','%C3%96','%C5%9F','%C5%9E','%C3%A7','%C3%

我编写了一个简单的函数来替换非ASCII土耳其字符

function url_cevir($yazi) {
        $yazi = trim($yazi);

        $eski = array('ü','Ü','ö','Ö','ş','Ş','ç','Ç','ı','İ','ğ','Ğ',' ');
        $yeni = array('%C3%BC','%C3%9C','%C3%B6','%C3%96','%C5%9F','%C5%9E','%C3%A7','%C3%87','%C4%B1','%C4%B0','%C4%9F','%C4%9E','%20');


        return str_replace($eski,$yeni,$yazi);
    }
当我在我调用它的页面中定义它时,它正好起作用。但它只在我将其包含在外部页面时替换空格

所有代码都在这里,没有其他代码污染这些代码

从外部页面:

<?php

include('functions/array_and_string_fns.php');


echo url_cevir('ısı geçişi');
?>    

如果我将它与echo url_cevir('sıgeçişi')一起使用它打印
ısı%20geçişi

如果我使用echo('sıgeçişi')它按照我们的预期打印出
ısıgeçişi

所以我认为问题来自函数url_cevir
我想我遗漏了一些非常简单的东西。另一方面,这是一个非常有趣的问题。

当您将文字字符放入源文件时,实际源文件的编码变得非常重要


我认为你的源文件有不同的编码。检查文本编辑器上的设置。

我不理解这个问题。如果不希望函数将空格编码为
%20
,请从函数数组中删除该部分。它必须将所有$eski=字符替换为$yeni=字符。但它仅在包含此函数时替换空格。