Я использую cakePHP и застрял в этой загадке. Время от времени я создал функцию, которая динамически вставляет пользовательские маршруты в файл с помощью file_get_contents() и функции замены строк.file_get_contents() не умеет читать теги PHP <?php ?>
$filename = "301routes.php";
$path = SERVER_PUBLIC_PATH . 'app' . DS . 'config';
$add_data = "Router::connect('".$old."', array('controller'=>'index_router', 'action'=>'redirect_301','".$new."'));\n";
$file_data = file_get_contents($path . DS . $filename);
$file_data = str_replace("<?php\n","<?php\n".$add_data,$file_data);
file_put_contents($path . DS . $filename, $file_data);
это работало, но теперь я попытался поставить точно такую же функцию в другом проекте, и его работы только тогда, когда нет PHP тега. Проблема с file_get_contents() функция becouse читает хорошо файл, когда содержание:
// routes here
Router::connect('/articles/category/en/test', array('controller'=>'index_router', 'action'=>'redirect_301','/articles/category/en/test-old'));
но когда я изменить начало нравится эта
<?php
Router::connect('/articles/category/en/test', array('controller'=>'index_router', 'action'=>'redirect_301','/articles/category/en/test-old'));
?>
file_get_contents() возвращает только часть файла:
string(154) "'index_router', 'action'=>'redirect_301','/articles/category/en/test-old')); ?>"
Может кто-нибудь мне помочь?
Ttake взгляд на команду 'sed' Unix. Это сэкономит вам время на подобные вещи. – Alfwed
'file_get_contents()' не будет разделять часть файла. Однако ваша функция будет включать теги ' Php' и'?> 'В вашем массиве. Вы уверены, что это не просто проблема с отображением? –
Да, это была проблема дисплея. Я не понимал, что в начале – Cipars