0

私が管理しているブログは、ほとんどがHTMLを含むプレーンテキストです。そのブログのテキストを取得して表示するときは、データベースにPHPコードが配置されないようにしながら、そのテキスト内でPHPコードの行を実行したいと考えています。私はMySQLを使用しています。

ほとんどの場合、PHPコードはのようになります<? include "phpfile.php"; ?>。投票やスライドショーなどの拡張機能を挿入するために使用します。

以前は、PHPファイルを保持するためにiframeに依存していました。

This is the blog text. <a id='marker'></a> 
This is the second part of the blog text.

「preg_replace()」を使用して、マーカー(<a id='marker'></a>)をiframeのコードに置き換えました。これにより、次のようになります。これをPHPで自分のページにエコーします。

This is the blog text. <iframe src='phpfile.php'></iframe>
This is the second part of the blog text.

これは問題なく動作しますが、保持しているコンテンツのiframeの高さと幅を推測する必要がないという制約なしに動作できるようにしたいと思います。

他のスレッド/質問を読む際に、私はこれらを考慮しました:

  • ユーザーがブログを入力した後にPHPコードをデータベースに挿入する(悪い考え)

  • 「マーカー」をコードに置き換えた後、「eval」を使用してPHPコードを実行しますか?これを1つのステップでどのように行うかわかりません。次のアプローチのようなことをしなければならないと思います。(「eval()」はできるだけ避けるべきだと思います!!!)

  • ブログテキストを2つの部分に分割します(変数で保持されます)。で区切られた連続した「エコー」ステートメント(ブログの各部分に1つ)を実行できますinclude "phpfile.php";。これが私のサーバーにとってどれほどメモリを大量に消費するかはわかりません。たとえば、最大50kbのテキストブロックを処理します。

その最後のアプローチとは別に、PHPコードを挿入して実行するためのより簡単な方法が必要だと感じています。

提案のためのティア。

4

1 に答える 1

0

これを解決するには、単に str_replace を使用できます。

あなたのテキスト:

Hello world, i want [phpcode] here

脚本:

<?php $text = str_replace( "[phpcode]", phpcode(), $text);

次に、コードで phpcode() を定義し、必要なことを行います。

正規表現を使用してこれを変更し、"[ ]" の間のテキストを関数名に置き換えることもできます。

こんにちは、ここに [php:functionName] が必要です

于 2012-08-15T22:05:05.137 に答える