PHP писать в файл минус код PHP? - PullRequest
0 голосов
/ 25 ноября 2011

Я хочу записать файл в файл, и этот файл содержит некоторый код PHP. Я не хочу, чтобы файл запускал PHP, когда кто-то читает файл. По сути, мне нужен весь текст между <?php и ?>, а также эти теги. Есть ли способ сделать это в PHP? Возможно с strpos? Я пытался использовать strpos; но я не мог понять это.

Вот пример:

<?php
echo "This is the PHP I want removed!";
?>
<html>
<p>This is what I want written to a file!</p>
</html>

Ответы [ 3 ]

7 голосов
/ 25 ноября 2011

Самый простой способ, вероятно, состоит в том, чтобы проанализировать файл с помощью token_get_all, просмотреть все результаты и отбросить все, что не относится к типу T_INLINE_HTML.

1 голос
/ 25 ноября 2011

Если ваши теги <?php ?> всегда будут в начале вашего входного файла, вы можете просто взорвать ввод и записать в свой вывод все, что находится вокруг ваших тегов:

Ввод:

<?php echo "This is the PHP I want removed!"; ?>
<html> 
    <p>This is what I want written to a file!</p> 
</html>

Код:

$inputTxt = file_get_contents($path . $file , NULL, NULL);

$begin = explode("<?php", $inputTxt);
$end = explode('?>', $inputTxt);
fwrite($output,  $begin[0] . $end[1] . "\n\n");
?>

Выход:

До

<?php
echo "This is the PHP I want removed!";
?>
<html>
<p>This is what I want written to a file!</p>
</html>

После

<html>
<p>This is what I want written to a file!</p>
</html>

Но, если вы планируете иметь более одного набора <?php ?> тегов, вам нужно будет использовать preg_match:

Ввод:

<?php
echo "This is the PHP I want removed!";
?>
<html>
    <p>This is <?php echo $something; ?> I want written to a file!</p>
</html>

Код:

<?php
$file="input.txt";
$path='C:\\input\\';
$output = fopen($path . "output.txt",'w');

$inputTxt = file_get_contents($path . $file , NULL, NULL);

$pattern = '/<\?php.+\?>/isU';
$replace = '';

$newInput = preg_replace($pattern, $replace, $inputTxt);

fwrite($output,  $newInput);
?>

Выход:

До

<?php
echo "This is the PHP I want removed!";
?>
<html>
<p>This is <?php echo $something; ?> I want written to a file!</p>
</html>

После

<html>
<p>This is  I want written to a file!</p>
</html>
1 голос
/ 25 ноября 2011

Если вы можете выбрать имя файла для записи, вы можете записать в файл .phps, который не будет оцениваться как PHP. Если посетитель просматривает страницу .phps, ему будет предоставлен обычный текстовый файл, содержащий все внутри тегов <?php ?>, а также HTML.

...