Home  >  Article  >  Backend Development  >  Parse javascript scripts within PHP using php-js-ext_PHP Tutorial

Parse javascript scripts within PHP using php-js-ext_PHP Tutorial

WBOY
WBOYOriginal
2016-07-15 13:26:031030browse

When you develop a PHP program for your personal interests and hobbies, and face a js script that can achieve your purpose but is more than a thousand lines long, do you have the energy to rewrite it in php? Want to simulate user behavior with PHP? But I encountered a site flooded with js... A little-known php extension project can meet these needs. The purpose of this extension is to interpret javascript in php.
Project homepagehttp://aurore.net/projects/php-js/
php-js-ext is a bridge between mozilla javascript interpreter and php, so we need Download the last version of php-js-ext which is 0.1.2. You also need to download the latest version of mozilla js which is 1.7.0. The link is as follows (php-js-ext 0.1.2 was released to work with js-1.5, but after my Test, can also work with 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
The system is CentOS 4.5
1. Install mozilla js
unlock js-1.7.0.tar.gz

tar zxvf js-1.7.0.tar.gz
cd js /src

Start compilation (see the final instructions if compilation cannot be completed)

make -f Makefile.ref

Copy libjs.so To /usr/lib

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

Copy the header file to /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/

Since then, the installation of mozilla js has been completed. Let’s start the installation of php-js-ext
2. Install php-js-ext
Unlock 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

Create an environment and set the extended version (if more than one php exists, you need to enter the full path to phpize)

/path/phpize

Configure, compile and install (if more than one PHP exists or configure cannot find the location of PHP, you need to specify -with-php-config=/path/php-config when configure)

./configure
make && make install

If everything is correct, js.so is already in your php lib directory

Finally, modify your php.ini, in the corresponding Add extension=js.so to the location and confirm that extension_dir is set correctly.
Output a phpinfo result to see if js.so is loaded correctly and possible error messages.
If everything is correct, we can start using this feature.
Attached here are the instructions from the official website:

A simple ./configure; make; make install should do the trick. Make sure to add an extension=js.so line to your php .ini/php.d. Note: you need to install libjs first. If you're using a Redhat-esque system, you can use the SRPM provided above, else, use the TBZ.
Then, just use js_eval to evaluate your JavaScript. js_eval returns the value returned by the JavaScript interpreter to PHP.
For example:
js_eval("var a = 123;");
js_eval("var b = 456;");
$c = js_eval("[a, b];");
echo "a is ".$c[0]."n";
echo "b is ".$c[1 ]."n";
js_eval("var sum = function(x, y) { return x + y; }");
$d = js_eval("sum(a, b);");
echo "The sum of a and b is ".$d."n";
Would produce:
a is 123
b is 456
The sum of a and b is 579
js_eval takes an optional boolean argument, assoc, which returns objects as associative arrays instead of PHP objects.
The php-js execution environment provides two built-in JavaScript system functions:
* print
* gc
print outputs its argument to the php output stream.
gc forces garbage collection within the JavaScript environment. The error occurs because the connector and kernel no longer support a.out. We need to use gcc to generate a shared library instead of ld. Open js/src/config/Linux_All.mk, change MKSHLIB = $(LD) -shared $(XMKSHLIBOPTS) on line 50 to MKSHLIB = $(CC) -shared $(XMKSHLIBOPTS), make -f Makefile.ref clean Then try compiling again. )


http://www.bkjia.com/PHPjc/446651.html

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/446651.htmlTechArticleWhen you develop PHP programs due to personal interests and hobbies, you are faced with thousands of years of experience in achieving your goals. Execute the above js script, do you have the energy to rewrite it in php? Want to use PHP to simulate user behavior...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn