Глюк кодировки

12
Yurecm
На сайте с 25.02.2007
Offline
233
1977

НА хостинге есть папка, в которой загружены папки с русскими именами, пытаюсь их вывести через вот такой код

	
if($OpenDir=opendir("baza"))
{
while(($file=readdir($OpenDir)) !== false)
if($file != "." && $file != "..") {
$example[]=$file;
}
} else {
echo "";
}

}


echo '<ul id="slova">';
for ($i=0; $i < count($example); $i++) {
echo "<li><a href=poisk.php?text=".urlencode(str_replace('.txt', '', str_replace($REG, $reg, $example["$i"]))).">".str_replace('.txt', '', str_replace($REG, $reg, $example["$i"]))."</a></li>";
}

Что это за бредовая кодировка? как исправить?

Заранее спасибо плюсом! :)

Chkan
На сайте с 22.10.2008
Offline
120
#1

Попробуй mb_str_replace вместо str_replace.

🤠 Разработка/сопровождение проектов на Python/Django (https://django.ws)
Yurecm
На сайте с 25.02.2007
Offline
233
#2

................................

---------- Добавлено 11.05.2017 в 13:55 ----------

Fatal error: Call to undefined function mb_str_replace() in /home/u95507/siteru/www/slova.php on line 44

Chkan
На сайте с 22.10.2008
Offline
120
#3

function mb_str_replace($needle, $replacement, $haystack) {

return implode($replacement, mb_split($needle, $haystack));

}

попробуй вот эту ф-цию использовать

Z0
На сайте с 03.09.2009
Offline
759
#4

в <header></header> суньте

<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />

У меня ваш пример работает с кириллицей

Yurecm
На сайте с 25.02.2007
Offline
233
#5

ziliboba0213, не могу. Сайт в win-1251

Дело не в str_replace, я упростил код

if($OpenDir=opendir("baza"))
{
while(($file=readdir($OpenDir)) !== false)
if($file != "." && $file != "..") {
$example[]=$file;
}
} else {
echo "";
}

}


for ($i=0; $i < count($example); $i++) {
echo " ".$example["$i"]." ";
}

все тот же бред

LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#6

На хостинге все названия в utf-8 вам их сначала нужно перевести в win-1251 и только потом работать.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Z0
На сайте с 03.09.2009
Offline
759
#7

Может через iframe тогда? А там кодировку поменять :p

I
На сайте с 03.01.2016
Offline
73
#8

Добавьте в .htacess


AddDefaultCharset windows-1251
php_value default_charset "cp1251"
ZT
На сайте с 24.07.2012
Offline
39
#9

На UNIX-хостингах названия файлов в UTF-8.

Поэтому так:


<?php

setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');

$example = array();

if ($OpenDir = opendir("baza")) {
while (($file = readdir($OpenDir)) !== false)
if ($file != "." && $file != "..") {
$example[] = $file;
}
} else {
echo "";
}

}


echo '<ul id="slova">';
for ($i = 0; $i < count($example); $i++) {

$name = mb_convert_encoding($example["$i"], 'Windows-1251', 'UTF-8');
$name = str_replace($REG, $reg, $name);
$name = str_replace('.txt', '', $name);


echo sprintf('<li><a href="poisk.php?text=%s">%s</a></li>', urlencode($name), $name);
}


---------- Добавлено 11.05.2017 в 19:56 ----------

Лишняя закрывающая фигруная скобка откуда-то взялась. Вот так

https://pastebin.com/xz8W1P1R

tommy-gung
На сайте с 22.11.2006
Offline
287
#10

про header("Content-type: text/html; charset=utf-8"); и iconv только я знаю что ли?

Здесь не могла быть ваша реклама
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий