работа с файлами

Тема в разделе "PHP", создана пользователем serrty, 19 мар 2016.

  1. serrty

    serrty

    Регистрация:
    9 июн 2015
    Сообщения:
    76
    Симпатии:
    1
    PHP:
    $new_file=file_get_contents("$title_2.php");
    $change_title=preg_replace('~<title>(.*)<\/title>~iu'"<title>$title_text</title>",$new_file);
    $change_keword=preg_replace('~(<meta name="keywords" content=[а-яА-Я,\s"\/>]+)|(<meta name ="keywords" content=[а-яА-Я,\s"\/>]+)|(<meta name= "keywords" content=[а-яА-Я,\s"\/>]+)|(<meta name = "keywords" content=[а-яА-Я,\s"\/>]+)~iu'"$keword_1[0]",$new_file);
    $file fopen("$title_2.php""w");
    fwrite($file"$change_title");
    fclose($file);
    $file fopen("$title_2.php""r+");
    fwrite($file"$change_keword");
    fclose($file);

    с помощью регулярных выражений меняю строки, а затем как записать все изменения в один файл, потому ни как не получается, только можно изменить одно из трех, это либо кейворд либо тайтл, файл постоянно удаляет старый и записывает новый, а нужно чтобы все было в одном, подскажите пожалуйста, заранее спасибо
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Просто работайте с одной переменной по очереди применяя к ней регулярки.

    PHP:
    $new_file file_get_contents("$title_2.php");
    $new_file preg_replace('~<title>(.*)<\/title>~iu'"<title>$title_text</title>",$new_file);
    $new_file preg_replace('~(<meta name="keywords" content=[а-яА-Я,\s"\/>]+)|(<meta name ="keywords" content=[а-яА-Я,\s"\/>]+)|(<meta name= "keywords" content=[а-яА-Я,\s"\/>]+)|(<meta name = "keywords" content=[а-яА-Я,\s"\/>]+)~iu'"$keword_1[0]",$new_file);
    А потом её пишите в файл.
     
    serrty нравится это.
  3. serrty

    serrty

    Регистрация:
    9 июн 2015
    Сообщения:
    76
    Симпатии:
    1
    Большое спасибо помогло, только вот не пойму ведь одна и та же переменная определяется заново, как такое может работать?
     
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Выполнение идёт справа налево: сначала содержимое переменной подставляется в выражение, результат которого записывается в отдельную область памяти, а затем происходит присвоение этого результата переменной (на самом деле, это просто замена указателя на область памяти).

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