<?php //print_r($search); $result=$orig; //print_r($orig_end); if($a==$b){ //сравниваем содержимое строк $flag[]=1; } else{ $flag[]=0; } } } ?>
Поиск и замена участка кода в файле.
Помогите новичку в PHP
- Предыдущая
- 1
- 2
- Показаны 16-28 из 28
Однако вы не учли вот что.
Во первых кусок кода который нужно найти и поменять, может встречаться не один раз.
Во вторых мне кажется не достаточно trim-нуть сравниваемые строчки. Как я правильно понял — эта команда убирает лишние пробелы в начале и конце строчки. А как быть на счет лишних пробелов внутри строчки
ведь например вот эти две строчки при сравнении не будут равны:
$a = 1; $a=1;
Я седня попытаюсь добить свой вариант и тоже вылажу для ознакомления.
// функция для очистки строки от пробелов и табуляции function ChangeSimbolSpace($str){ } // функция для очистки строк от кодов перевода и окончания строки function ChangeSimbolNull($str){ return $str; } // функция для удаления из массива пустых строк function ClearArrayEmpty($array){ foreach($array as $val){ $key = ChangeSimbolNull($val); $ret_arr[] = $val; } } return $ret_arr; } // создаем временные массивы данных без пустых строк $temp_search = ClearArrayEmpty($search); $temp_replace = ClearArrayEmpty($replace); $temp_in = ClearArrayEmpty($in); foreach($temp_in as $k => $str_in){ // проверкамассива с исходным кодом $str_in_key = $str_in; // создание ключа проверяемой строчки исходного кода, чтобы не изменять код массива $str_search_key = $temp_search[0]; // создание ключа ПЕРВОЙ строчки для поиска, чтобы не изменять код массива if (ChangeSimbolSpace($str_in_key) == ChangeSimbolSpace($str_search_key)){ // при совпадении ОЧИЩЕННЫХ от пробелов проверяемой и первой искомой строк $slice_in = array_slice($temp_in, $k, sizeof($temp_search)); // создаем срез исходных данных от совпавшей строки и длинной равной длине искомого кода $search_flag[$k] = 1; // создаем массив найденных совпадений, где ключ массива равен ключу совпавшей строки в массиве с исходным кодом. foreach ($slice_in as $kk => $str_slice_in){ // проверяем срез исходного кода на 100% совпадение с массивом кода для поиска if (ChangeSimbolSpace($str_slice_in) != ChangeSimbolSpace($temp_search[$kk])){ // если ОЧИЩЕННЫЕ от пробелов сравниваемы строки , хотябы раз не совпадут $search_flag[$k]= 0; // "обнуляем данные" в массиве совпадений break; // и прекращаем проверку среза } } } }
// функция для очистки строки от пробелов и табуляции function ChangeSimbolSpace($str){ } // функция для очистки строк от кодов перевода и окончания строки function ChangeSimbolNull($str){ return $str; } // функция для удаления из массива пустых строк function ClearArrayEmpty($array){ foreach($array as $val){ $key = ChangeSimbolNull($val); $ret_arr[] = $val; } } return $ret_arr; } // создаем временные массивы данных без пустых строк $temp_search = ClearArrayEmpty($search); $temp_replace = ClearArrayEmpty($replace); $temp_in = ClearArrayEmpty($in); foreach($temp_in as $k => $str_in){ // проверка массива с исходным кодом $str_in_key = $str_in; // создание ключа проверяемой строчки исходного кода, чтобы не изменять код массива $str_search_key = $temp_search[0]; // создание ключа ПЕРВОЙ строчки для поиска, чтобы не изменять код массива if (ChangeSimbolSpace($str_in_key) == ChangeSimbolSpace($str_search_key)){ // при совпадении ОЧИЩЕННЫХ от пробелов проверяемой и первой искомой строк $slice_in = array_slice($temp_in, $k, sizeof($temp_search)); // создаем срез исходных данных от совпавшей строки и длинной равной длине искомого кода $search_flag_temp[$k] = 1; // создаем массив найденных совпадений, где ключ массива равен ключу совпавшей строки в массиве с исходным кодом. foreach ($slice_in as $kk => $str_slice_in){ // проверяем срез исходного кода на 100% совпадение с массивом кода для поиска if (ChangeSimbolSpace($str_slice_in) != ChangeSimbolSpace($temp_search[$kk])){ // если ОЧИЩЕННЫЕ от пробелов сравниваемы строки , хотябы раз не совпадут $search_flag_temp[$k] = 0; // "обнуляем данные" в массиве совпадений break; // и прекращаем проверку среза } } } } $search_flag = array(); // приводим массив совпадений в потребный вид и удаляем строки с ложными срабатываниями. foreach ($search_flag_temp as $number => $flags){ if ($flags == 1){ $search_flag[]= $number; } } $out = $temp_in; $replace_start = 0; $replace_end = 0; foreach ($search_flag as $shift_key => $shift){ }
Следующим шагом надо разобраться как заменить на сервере исходный файл патченым.
В рамках ICMS2 конечно.
- Предыдущая
- 1
- 2
- Показаны 16-28 из 28