2015-12-09 4 views
0

Я использую str_replace для изменения URL-адресов в моем шаблоне в зависимости от выбранного имени домена. Но, похоже, он останавливает PHP-код в шаблоне от загрузки.str_replace, кажется, отключает PHP

Вот что я сделал:

<?php 

$domain = $website_data['domain']; 
$path_to_file = 'assets/sites/'.$domain.'/index.php'; 
$file_contents = file_get_contents($path_to_file); 
$file_contents = str_replace('domainhere',$domain,$file_contents); 
file_put_contents($path_to_file,$file_contents); 

echo $file_contents; 

?> 

Так это то, что я хочу, чтобы это сделать, то вторит в $ file_contents и файл-странице отображается. Кроме того, какой-либо материал PHP на странице просто не отображается.

Например, если я делаю это:

<?php echo $domain ?> 

Это будет пустой, если бы я посмотреть на исходный код, который я могу видеть это там написано, как описано выше.

Я не эксперт по PHP, как вы можете догадаться, поэтому любые идеи будут оценены, поскольку я, очевидно, что-то пропустил!

+2

php не является рекурсивно исполняемым. эхо не ВЫПОЛНИТЬ что-либо, оно просто выплевывает все, что вы ему рассказываете. если это что-то содержит «code block», ну, это просто символ '' ', за которым следуют'? 'и' p' и т. д. ... если вы хотите, чтобы код был выполнен, тогда вам понадобится неприятный хаки вроде 'eval()'. –

+0

Вы действительно уверены, что «$ domain» содержит именно то, что вы ожидаете? – durbnpoisn

+1

@MarcB или просто включить/потребовать? :-), который в основном такой же, как eval – PeeHaa

ответ

0

Я думаю, что вы хотите сделать это:

<?php 

$domain = $website_data['domain']; 
$path_to_file = 'assets/sites/'.$domain.'/index.php'; 
$file_contents = file_get_contents($path_to_file); 
$file_contents = str_replace('domainhere',$domain,$file_contents); 
file_put_contents($path_to_file,$file_contents); 
include($path_to_file); 

?> 

Как указано в комментариях выше, материал отображается с помощью echo() не выполняется в программном коде.

+0

Это работает! Огромное спасибо! –

+2

попробуйте еще раз. он не будет работать во второй раз. –

+0

его работающая еще ...? –

2

Я удивлен, что никто не сказал, какая эта ужасная идея. Если у вас есть два разных пользователя, которые обращаются к этому скрипту, они будут перезаписывать изменения друг друга. Кроме того, после первого изменения «domainhere» больше не будет существовать в исходном файле.

Вместо этого в любом месте, где у вас есть «domainhere» в первом файле, измените его на имя переменной, затем установите переменную перед просто включением файла.

+0

Я не могу установить «domainhere» как переменную, поскольку я использую какое-то программное обеспечение, которое не позволит мне использовать теги , программное обеспечение создает веб-страницу, но она превращает эти теги в < и > –