Поиск, подсчет, замена

1.27K
.

Kip-OK, и получим число со значением "-50" к примеру

.
Йытлеж Пок пик

Mi7teR, ну там зависит от текущей координаты (100 это примерное значение. там нужно подбирать)

.
(\/)____o_O____(\/)

Kip-OK, ну короч надо в переменную загонять это число, которое минус

.
Йытлеж Пок пик

Koenig, да

.
ДоХтор

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);
.
(\/)____o_O____(\/)

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, обращайся если что )

Всего: 26