Ильдар П.
22 повідомлення
#14 років тому
Привет. Не получается воспользуется этой функцией. Нужно что бы в файле text.xml буква А заменилась на букву И. Подскажите плиз, пробовал по всякому, но тупо ни чего не происходит.
Роман П.
1599 повідомлень
#14 років тому
Установите правильно локаль

например, setlocale(LC_ALL, 'ru_RU.CP1251';
Ильдар П.
22 повідомлення
#14 років тому
Делаю вот так, но не помогает:

$r = fopen("flashXML/data.xml",'r');
str_replace("А","И",fread($r,filesize("flashXML/data.xml")));
Вячеслав И.
28 повідомлень
#14 років тому
Можно так

$r = implode(file('flashXML/data.xml');
str_replace("А", "И", $r);
Артем Л.
11416 повідомлень
#14 років тому
Как-то так примерно:

$file = file_get_contents('flashXML/data.xml');
$tmp = str_replace("А","И", $file);
file_put_contents('flashXML/data.xml',$tmp);
Андрей Халецкий
3562 повідомлення
#14 років тому
Молодцы, продолжайте, когда надоест посмотрите в справочник.

- явно говорит что код

$r = fopen("flashXML/data.xml",'r');
str_replace("А","И",fread($r,filesize("flashXML/data.xml")));


нужно заменить как минимум на
$r = fopen("flashXML/data.xml",'r');
$result=str_replace("А","И",fread($r,filesize("flashXML/data.xml")));


Ну и за Цитата:
fread($r,filesize("flashXML/data.xml"
- думаю отдельное спасибо нужно сказать =)
Ильдар П.
22 повідомлення
#14 років тому
Ни один из способов не помогает....
Кирилл Е.
2817 повідомлень
#14 років тому
Можно изначально прочитать файл и вывести для просмотра того что выведет..

типо:

$file_string = file_get_contents("flashXML/data.xml");
echo $file_string; // посмотреть что выведет и определить кодировку :)
// если кодировка файла cp1251, а скрипта - utf8, делаем:
$file_string = str_replace(iconv("utf8", "cp1251", "A"), iconv("utf8", "cp1251", "И"), $file_string);
//если кодировки совпадают - простая замена без iconv должна сработать
file_put_contents("flashXML/data.xml", $file_string);


Ещё А есть английская и русская .. внимательно смотреть на раслкадку клавиатуры - они на вид похожи, но ASCII код у них разный.
Артем Л.
11416 повідомлень
#14 років тому
Ага, а еще проверить права доступа на запись...
Ильдар П.
22 повідомлення
#14 років тому
Я на локльной машине делаю, но все равно не хочет работать...
Кирилл Е.
2817 повідомлень
#14 років тому
Попробуйте ещё адрес к файлу абсолютный указать ..
так гадать не совсем удобно.. хоть-бы свой файл выложили
Ильдар П.
22 повідомлення
#14 років тому
Вот исходники - . Я что-то не понимаю почему не работает...
Евгений О.
2989 повідомлень
#14 років тому
blud73, Вам же написали, что str_replace в исходной строке ничего не меняет. Она возвращает измененную строку. А Вы свой исходный образец опять показываете.
Сергей К.
1649 повідомлень
#14 років тому
Код Hungry_Hunter - а должен работать. Если не работает, наверное что то кривое
Алексей К.
3 повідомлення
#14 років тому
Попробуй так, у меня работает без проблем.


function set_chr($hFileName, $hNewChar, $hFindChar, $hStr = 0) {
if(file_exists($hFileName)) {
$fp = fopen($hFileName, 'r+');
if(! $fp)
return false;
$size = fileSize($hFileName);
if( ! $size) {
fclose($fp);
return false;
}
$data = fread($fp, $size);
ftruncate($fp, 0);
rewind($fp);
if(empty($hStr))
fwrite($fp, str_replace($hNewChar, $hFindChar, $data));
else
fwrite($fp, ereg_replace($hNewChar, $hFindChar, $data));
fflush($fp);
fclose($fp);
unset($fp);
unset($data);
return true;
}
return false;
}

if(set_chr('flashXML/data.xml', 'А', 'И')) // str_replace
echo '<h1>Файл был удачно изменён...</h1>';

if(set_chr('flashXML/data.xml', 'И', 'А', 1)) // ereg_replace
echo '<h1>Файл был удачно изменён...</h1>';



setlocale() - распостраняется только на C - ные функции сравнения strcoll, strcmp. Что не разу интерпретатор не писали на C, как PHP
весь код подставляет на C-ые функции.