ホームページ > バックエンド開発 > PHPチュートリアル > php-js-ext_PHP チュートリアルを使用して PHP 内で JavaScript スクリプトを解析する

php-js-ext_PHP チュートリアルを使用して PHP 内で JavaScript スクリプトを解析する

WBOY
リリース: 2016-07-15 13:26:03
オリジナル
1074 人が閲覧しました

個人的な興味や趣味のために PHP プログラムを開発するとき、目的は達成できるものの 1,000 行を超える JS スクリプトに直面したとき、それを PHP で書き直す気力はありますか? PHP を使用してユーザーの動作をシミュレートしたいですか?しかし、js が溢れているサイトに遭遇しました...あまり知られていない php 拡張プロジェクトは、これらのニーズを満たすことができます。この拡張機能の目的は、php で javascript を解釈することです。
プロジェクトのホームページhttp://aurore.net/projects/php-js/
php-js-ext は、mozilla JavaScript インタプリタと php の間のブリッジであるため、最新バージョン 0.1.2 php-js をダウンロードする必要があります-ext の場合、最新バージョンの mozilla js 1.7.0 もダウンロードする必要があります。リンクは次のとおりです (php-js-ext 0.1.2 は js-1.5 で動作するようにリリースされましたが、私のテスト後、それも動作する可能性があります) js-1.7 は動作します)

wget http://aurore.net/projects/php-js/php-js-ext-0.1.2.tar.bz2
wget http://ftp.mozilla.org /pub/mozilla .org/js/js-1.7.0.tar.gz
システムはCentOS 4.5
1ですmozilla jsをインストール
js-1.7.0.tar.gzのロックを解除します

tar zxvf js-1.7. 0.tar.gz
cd js/src

コンパイルを開始します (コンパイルが完了できない場合は、最後の手順を参照してください)

make -f Makefile.ref

libjs.so を /usr にコピーします/lib

cp Linux_All_DBG .OBJ/libjs.so /usr/lib
ldconfig

ヘッダーファイルを/usr/include

cp jsapi.h jscompat.h jslong.h jsosdep.h jsotypes.hにコピーします。 jspubtd.h jstypes.h jsproto. tbl jsconfig.h Linux_All_DBG.OBJ/jsautocfg.h /usr/include/

mozilla jsのインストールが完了したので、php-js-extのインストールを開始しましょう
2. php-js-ext
php-js-ext-0.1.2.tar.bz2

tar jxvf php-js-ext-0.1.2.tar.bz2
cd php-js-ext-0.1を解凍します。 2

環境を作成し、拡張バージョンを設定します(複数のphpが存在する場合は、phpizeのフルパスを入力する必要があります)

/path/phpize

設定してコンパイルしてインストールします(複数のphpが存在する場合)存在するか、configure が php を見つけられません。configure -with-php-config=/path/php-config)

./configure
make && make install するときに場所を指定する必要があります

すべてが正しい場合、js.so はすでに php の lib ディレクトリにあります

最後に、php.ini を変更し、対応する場所に extension=js.so を追加し、extension_dir が正しく設定されていることを確認します。
phpinfo の結果を出力して、js.so が正しくロードされているかどうか、および考えられるエラー メッセージを確認します。
すべてが正しければ、この機能の使用を開始できます。
公式 Web サイトからの手順を添付します。

単純な ./configure; make install で、必ず extension=js.so 行を php.ini/php.d に追加してください。 : まず libjs をインストールする必要があります。Redhat 風のシステムを使用している場合は、上記で提供されている SRPM を使用できます。それ以外の場合は、js_eval を使用して JavaScript によって返された値を返します。 PHP への JavaScript インタープリター。
例:
js_eval("var a = 123;");
js_eval("var b = 456;");
$c = js_eval("[a, b];");
echo "a は ".$c[0]."n";
echo "b は ".$c[1]."n";
js_eval("var sum = function(x, y) { return x + y; }");
$d = js_eval("sum(a, b);");
echo "a と b の合計は ".$d."n";
次のようになります:
a 123
b は 456
a と b の合計は 579 です
js_eval はオプションのブール引数 assoc を受け取り、PHP オブジェクトの代わりにオブジェクトを連想配列として返します。
php-js 実行環境には、2 つの組み込み JavaScript システム関数が提供されます:
* print
* gc
print は引数を php 出力ストリームに出力します。
gc は JavaScript 環境内でガベージ コレクションを強制します。

(Redhat 以外の Linux ディストリビューションでは、mozilla js のコンパイル プロセス中にエラーが生成される可能性があります。コネクタとカーネルは a.out をサポートしなくなったため、ld の代わりに gcc を使用して共有ライブラリを生成する必要があります。 js/src/config/Linux_All.mk を開き、50 行目の MKSHLIB = $(LD) -shared $(XMKSHLIBOPTS) を MKSHLIB = $(CC) -shared $(XMKSHLIBOPTS) に変更し、-f Makefile.ref clean にしてみてください。再度コンパイル中です。 )


http://www.bkjia.com/PHPjc/446651.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446651.html技術記事個人的な興味や趣味のために PHP プログラムを開発するとき、目的は達成できるものの 1,000 行を超える長さの js スクリプトに直面したとき、それを PHP で書き直す気力はありますか? PHPを使用してユーザーの行動をシミュレートしたい...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート