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); с помощью регулярных выражений меняю строки, а затем как записать все изменения в один файл, потому ни как не получается, только можно изменить одно из трех, это либо кейворд либо тайтл, файл постоянно удаляет старый и записывает новый, а нужно чтобы все было в одном, подскажите пожалуйста, заранее спасибо
Просто работайте с одной переменной по очереди применяя к ней регулярки. 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); А потом её пишите в файл.
Большое спасибо помогло, только вот не пойму ведь одна и та же переменная определяется заново, как такое может работать?
Выполнение идёт справа налево: сначала содержимое переменной подставляется в выражение, результат которого записывается в отдельную область памяти, а затем происходит присвоение этого результата переменной (на самом деле, это просто замена указателя на область памяти). Вообще, тут не принципиально использование именно одной переменной, можно использовать и несколько разных, главное - использовать их последовательно, то есть, в каждое следующее выражение подставлять результат работы предыдущего выражения, а не начальную переменную.