X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> php найти, заменить или добавить строку. Нужна помощь.
scanread
scanread
Topic Starter сообщение 15.4.2014, 18:14; Ответить: scanread
Сообщение #1


В общем, есть вот такой скрипт:

Код
$fileop= "test.php";
$oldstr = "title=\'$title\',";
$newstr = "title=\'$title\',\n title_en=\'$title_en\',";
$file = file($fileop);
if (is_array($file))
    {
    foreach($file as $key => $value)
        {
        $file[$key]= preg_replace($oldstr, $newstr, $value);
        }
    }
    else
    {
    exit ("Ошибка");
    }
$fp = fopen($file, "w+");
fwrite($fp,implode("",$file));
fclose($fp);
echo "Строка заменена";


Выдает ошибку preg_replace(): Delimiter must not be alphanumeric or backslash in

и это:
Warning: fopen() expects parameter 1 to be string, array given in on line 19 Warning: fwrite() expects parameter 1 to be resource, boolean given in

и тому подобные... Мне нужно найти и заменить в пхп файле строку

Код
title='$title',
по всему файлу на
Код
title='$title',
                    title_en='$title_en',
или же просто дописать с новой строки
Код
title_en='$title_en',


Я так понимаю дело в кавычках. Подправил слешами, чтобы не экранировались, все равно не работает что-то. Объясните, кто может, пожалуйста, как искать подобные строки и заменять их или же дописывать после них нужную часть кода с последующим сохранением файла. Заранее благодарю.


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
_AXE_
_AXE_
сообщение 15.4.2014, 18:22; Ответить: _AXE_
Сообщение #2


Дело даже не в кавычках. Если Вам заменить в PHP-файле, то может следует прибегнуть к стандартным инструментам (поиск/замена) текстовых редакторов?
PS: в коде ошибки везде, где только это возможно, даже в форматировании кода

Сообщение отредактировал _AXE_ - 15.4.2014, 18:24


--------------------
Для благодарностей была придумана карма!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 15.4.2014, 18:31; Ответить: x64
Сообщение #3


регулярки для данной задачи лишнее. функции f*() — тоже
Код
$fileop = 'test.php';
$oldstr = "title=\'$title\',";
$newstr = "title=\'$title\',\n title_en=\'$title_en\',";
$buf = file_get_contents($fileop);
$buf = str_replace($oldstr, $newstr, $buf);
file_put_contents($fileop, $buf);
echo 'Строка заменена';


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
scanread
scanread
Topic Starter сообщение 15.4.2014, 18:45; Ответить: scanread
Сообщение #4


_AXE_, безусловно, текстовым редактором проще всего найти и заменить. Зачем тогда я вопросом этим задался? Вполне логично предположить, что необходимо решить вопрос с помощью php, а не чем-то другим.

x64, спасибо. Проверил. Написало, что строка изменена, но ее почему-то не изменило.... :blink:

Еще вопрос, как дописать именно после title='$title', - title_en='$title_en', ?

Сообщение отредактировал scanread - 15.4.2014, 18:52


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 15.4.2014, 19:10; Ответить: x64
Сообщение #5


смотрите, в чём дело: кавычки ' и " (одинарная и двойная) трактуются совершенно по разному
код:
Код
$oldstr = 'title=\'$title\',';
echo $oldstr;

выведет
Цитата
title='$title',


в то время, как в коде:
Код
$title = 'aga';
$oldstr = "title=\'$title\',";
echo $oldstr;

будет производиться подстановка переменной $title в строку, т. е. результатом работы будет уже строка
Цитата
title='aga',


исходя из того, какое поведение требуется, нужно использовать одинарные иди двойные кавычки

Цитата(scanread @ 15.4.2014, 18:45) *
как дописать именно после title='$title',

в этом случае, можно использовать функцию strpos() для поиска с последующими substr() для вырезания нужных мест с дальнейшей конкатенацией. но через замену проще.

Сообщение отредактировал x64 - 15.4.2014, 19:13


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
scanread
scanread
Topic Starter сообщение 15.4.2014, 19:17; Ответить: scanread
Сообщение #6


x64,

дело в том, что необходимо найти участок кода
Код
title='$title',


Т.е., он уже использует кавычки. И заменить его, выходит, на
Код
title='$title',
title_en='$title_en',


Или же: после одного дописать с новой строки другое. Но везде в переменных используются эти кавычки и заодно якобы и переменная. Как же тогда записать правильно? :huh:

UPD: докумекалсО...

Код
$oldstr = 'title=\'$title\',';
$newstr = 'title=\'$title\', title_en=\'$title_en\',';
$buf = file_get_contents($fileop);
$buf = str_replace($oldstr, $newstr, $buf);
file_put_contents($fileop, $buf);
echo 'Строка заменена';


спасибо.

Сообщение отредактировал scanread - 15.4.2014, 19:20


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 15.4.2014, 19:19; Ответить: x64
Сообщение #7


тогда используйте одинарные кавычки
Код
$fileop = 'test.php';
$oldstr = 'title=\'$title\',';
$newstr = 'title=\'$title\',' . "\n" . ' title_en=\'$title_en\',';
$buf = file_get_contents($fileop);
# $cnt — количество замен в строке
$buf = str_replace($oldstr, $newstr, $buf, $cnt);
file_put_contents($fileop, $buf);
if ($cnt) echo 'Строка заменена';
else echo 'Строка не найдена';



вы молодец :)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Сообщение отредактировал x64 - 15.4.2014, 19:25


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужна програмка постинга в свои сайты
0 kasey7 269 Вчера, 19:54
автор: kasey7
Открытая тема (нет новых ответов) Создать видеоканал лучше в ютуб или телеграм?
20 uahomka 3532 20.4.2024, 20:56
автор: Vmir
Открытая тема (нет новых ответов) Требуется помощь по сайту на "ВордПресс"
Закрылся доступ в панель администратора
15 Tia2 2369 17.4.2024, 0:54
автор: diviner99
Открытая тема (нет новых ответов) Если в сайт с одними ключами, которые там долго, добавить новую рубрику с новыми ключами
2 Tutich 1319 16.4.2024, 8:27
автор: Tutich
Открытая тема (нет новых ответов) Если статья не в индексе Google - она уникальна или нет?
5 uahomka 1440 3.4.2024, 23:56
автор: Liudmila


 



RSS Текстовая версия Сейчас: 23.4.2024, 22:15
Дизайн