Kip-OK, и получим число со значением "-50" к примеру
Mi7teR, ну там зависит от текущей координаты (100 это примерное значение. там нужно подбирать)
Kip-OK, ну короч надо в переменную загонять это число, которое минус
Kip-OK, если только для чтения, то можно так
* (+/-)
$fp = fopen('map.txt', 'r') or die('Ошибка чтения!');
while (!feof($fp)) {
echo preg_replace_callback(
'~posZ="([\d-.]+)"~i',
function ($int) {
return 'posZ="'. ($int[1] - 100) .'"';
},
fgets($fp)
);
}
fclose($fp);
Kip-OK, а тебе результат куда надо? сохранить обратно в файл как было но с новыми значениями?
Koenig, да. результат должен заменить текущее значение
# Kip-OK (30.03.2017 / 17:08)
Koenig, да. результат должен заменить текущее значение
Ну тогда так
* (+/-)
$fp = fopen('map.txt', 'r') or die('Ошибка чтения!');
$fp2 = fopen('map2.txt', 'w');
$out = 0;
while (!feof($fp)) {
$line = preg_replace_callback(
'~posZ="([\d-.]+)"~i',
function ($int) {
return 'posZ="'. ($int[1] - 100) .'"';
},
fgets($fp)
);
$out += fwrite($fp2, $line);
}
fclose($fp);
fclose($fp2);
echo 'Записано '. $out .' байт!';
Запись будет в новый файл.
А во втором варианте имя файла с данными на выходе скрипта останется неизменным (перезапись), но в этом случае, данные исходного файла будут перерасчитаны при каждом запуске скрипта.
Вариант 2 (+/-)
$file1 = 'map.txt';
$file2 = '2'. $file1;
$fp1 = fopen($file1, 'r');
$fp2 = fopen($file2, 'w');
$out = 0;
while (!feof($fp1)) {
$line = preg_replace_callback(
'~posZ="([\d-.]+)"~i',
function ($int) {
return 'posZ="'. ($int[1] - 100) .'"';
},
fgets($fp1)
);
$out += fwrite($fp2, $line);
}
fclose($fp1);
fclose($fp2);
unlink($file1);
if ( rename($file2, $file1) ) {
echo 'Записано '. round( ($out / 1024), 3 ) .' кб!';
} else {
echo 'Произошла ошибка!';
}
Kip-OK, обращайся если что )