PHPのファイルからマイナスのPHPコードを書く?

I want to write a file to a file and the file contains some PHP code. I don't want the file to run the PHP when someone reads the file. Basically, I want all the text between the <?php and the ?>, plus those tags. Is there any way to do this in PHP? Possibly with strpos? I tried to use strpos; but I couldn't figure it out.

ここに例があります:

<?php
echo "This is the PHP I want removed!";
?>
<html>

This is what I want written to a file!

</html>
0
PHPコード "、" <?php?> と "だから...あなたは生のPHPファイルをそのまま、あるいは何にしたいのですか?
追加された 著者 deceze,
私はあなたの尋ねることをかなり伝えることはできません。簡単なサンプル入力ファイルと出力を提供できますか?おそらくすべてがクリアされます。
追加された 著者 Trott,
私は、PHPコードを削除し、HTMLのみをします。
追加された 著者 snarkyazoid,

3 答え

おそらく最も簡単な方法は token_get_all を使ってファイルを解析することです結果をループし、 T_INLINE_HTML タイプでないものはすべて破棄します。

7
追加された
@snark token_get_all のドキュメンテーションを見てください。 var_dump を使用して自分自身で確認してください。配列をループして、アイテムのタイプが T_INLINE_HTML であるかどうかを確認します。そうであれば、別のファイルに書き込んでください。
追加された 著者 deceze,
追加された 著者 deceze,
@snark申し訳ありません、もう少しお試しください。配列を使って作業することは、できるだけ早く実現するために必要な基本的なものです。 :)
追加された 著者 deceze,
前にその機能に逃げたことはありません。 +1
追加された 著者 code_burgar,
さて、私はそれを得る。私はパーサーを使用し、ノブではありません。
追加された 著者 snarkyazoid,

<?php?> タグが入力ファイルの一番上に表示される場合は、入力を爆発させて、

入力:

<?php echo "This is the PHP I want removed!"; ?>
<html> 
    

This is what I want written to a file!

</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>

This is what I want written to a file!

</html>

<html>

This is what I want written to a file!

</html>

しかし、複数の <?php?> タグを持つ予定がある場合は、preg_matchを使う必要があります:

入力:

<?php
echo "This is the PHP I want removed!";
?>
<html>
    

This is <?php echo $something; ?> I want written to a file!

</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>

This is <?php echo $something; ?> I want written to a file!

</html>

<html>

This is I want written to a file!

</html>
1
追加された
<?php echo 'これを解析してください! ?> '; ?> : - P
追加された 著者 deceze,
あるいは、実際のパーサーを使って...、p
追加された 著者 deceze,
Touche ...私は簡単な例を挙げようとしていました。しかし、ネストされたphpタグについて心配していたら、マッチするかどうかをチェックし、ネストされたタグやハングしているタグをチェックしてください。
追加された 著者 Josh Ripley,
実際のパーサを使用します。
追加された 著者 snarkyazoid,

書き込み先のファイル名を選択できる場合は、PHPとして評価されない.phpsファイルに書き込むことができます。 .phpsページを閲覧すると、 <?php?> タグ内のすべてを含むプレーンテキストファイルとHTMLが表示されます。

1
追加された
コードを表示するのではなくコードをダウンロードしようとしている場合は、.htaccessファイルに AddType text/plain phps (または使用する拡張子)を追加する必要があります。
追加された 著者 drusepth,
それは面白いです...箱の外で考えています。私はそれを試してみます。 (自分の内線番号付き):D
追加された 著者 snarkyazoid,
ああ...。しましょう。
追加された 著者 snarkyazoid,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com