PHP动态生成javascript文件的2个例子,5的PHP代码高亮显示与实现可运行代码
分类:微服架构

一、PHP动态变化

discuz!5.0论坛展现风格的php代码高亮呈现插件,
把php代码实行语法着色,钟爱PHP的同志能够轻便的看代码啦。
何况增添了html代码运维效率。
此插件是在那前某位同志发布的Discuz!4的php代码高亮呈现底工之上修改产生。
除此以外,本人的php学习步入了停滞状态,
瞩望有人能支援笔者走出php的学习困境
My QQ:5642382  我的QQ群:2577162

首先步:在PHP文件中一向写入JS代码,并在头顶申明那是多个JavaScript文件

效果:发贴时选取[php]php代码[/php]标识来高亮呈现php代码,
      使用[runcode]Html代码[/runcode]标记来运作HTML代码(在顾客端运转非服务器)。

复制代码 代码如下:

插件增添步骤如下:
1.修改include/common.js
  查找
复制代码 代码如下:
function copycode(obj) {
        var rng = document.body.createTextRange();
        rng.moveToElementText(obj);
        rng.scrollIntoView();
        rng.select();
        rng.execCommand("Copy");
        rng.collapse(false);
}

<?php header('Content-Type: application/x-javascript; charset=UTF-8');?>

在这里个函数停止的下边增添:
复制代码 代码如下:
function runCode(obj) { 
        var winname = window.open('', "_blank", ''); 
        winname.document.open('text/html', 'replace'); 
        winname.document.writeln(obj.value); 
        winname.document.close(); 

其次步:用PHP输出转义JavaScript代码

function saveCode(obj) { 
        var winname = window.open('', '_blank', 'top=10000'); 
        winname.document.open('text/html', 'replace'); 
        winname.document.writeln(obj.value); 
        winname.document.execCommand('saveas','','code.htm'); 
        winname.close(); 

复制代码 代码如下:

2.修改include/discuzcode.func.php
  查找
复制代码 代码如下:
        $discuzcodes['codecount']++;
        return "[tDISCUZ_CODE_$discuzcodes[pcodecount]t]";
}

function jsformat($str)
{
    $str = trim($str);
    $str = str_replace('\s\s', '\s', $str);
    $str = str_replace(chr(10), '', $str);
    $str = str_replace(chr(13), '', $str);
    $str = str_replace('    ', '', $str);
    $str = str_replace('\', '\\', $str);
    $str = str_replace('"', '\"', $str);
    $str = str_replace('\'', '\\'', $str);
    $str = str_replace("'", "'", $str);
    return $str;
}

(注:也足以用Editplus直接查找到代码的第110行来展开下边包车型大巴增进)
在下边继续拉长:
复制代码 代码如下:
//------- 添加 [runcode] Html代码 [/runcode] 来运行Html代码
function runcodedisp($code) { 
        global $discuzcodes; 
        $discuzcodes['pcodecount']++; 
        $code = htmlspecialchars(str_replace('\"', '"', preg_replace("/^[nr]*(.+?)[nr]*$/is", "\1", $code))); 
        $discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "

一贯调用jsformat($str卡塔尔(قطر‎
末段一步:举行url重写,譬如PHP地址为 xxx/123.php 只要重写成 xxx/123.js 至此已经高达目标。

$code

以PHPCMS为例

   

复制代码 代码如下:

 提示:您能够先改正部分代码再运行<>
"; 
        $discuzcodes['codecount']++; 
        return "[tDISCUZ_CODE_$discuzcodes[pcodecount]t]"; 

<?php header('Content-Type: application/x-javascript; charset=UTF-8');?>
{pc:content action="position" posid="1" order="id DESC" num="7" $catid=11}
<?php
function jsformat($str){
    $str = trim($str);
    $str = str_replace('\s\s', '\s', $str);
    $str = str_replace(chr(10), '', $str);
    $str = str_replace(chr(13), '', $str);
    $str = str_replace('    ', '', $str);
    $str = str_replace('\', '\\', $str);
    $str = str_replace('"', '\"', $str);
    $str = str_replace('\'', '\\'', $str);
    $str = str_replace("'", "'", $str);
    return $str;
}
?>
{loop $data $v}
document.writeln("<?php echo jsformat("<a href="$v[url]"><img src="$v[thumb]"></a>");?>");
{/loop}
{/pc}

//------- 添加  [php] php代码 [/php] 来高亮呈现php代码,进行php语法着色
function phpcodedisp($code) { 
        global $discuzcodes; 
        $discuzcodes['pcodecount']++; 
        $code = phphighlite(str_replace("\"", """, $code)); 
        $discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "
[复制PHP代码]<>PHP代码如下:<>$code<>
"; 
        $discuzcodes['codecount']++; 
        return "[tDISCUZ_CODE_$discuzcodes[pcodecount]t]"; 

每多个循环都用 document.writeln(卡塔尔(قطر‎写出转移后的代码。

function phphighlite($code) { 
        if(!strpos($code,"n") && !strpos($code,'') && substr($code,0,2) != '') { 
                $code = ''; 
                $addedtags = 1; 
        } 
        ob_start(); 
        $oldlevel = error_reporting(0); 
        highlight_string($code); 
        error_reporting($oldlevel); 
        $buffer = ob_get_contents(); 
        ob_end_clean(); 
        if ($addedtags) { 
                $openingpos = strpos($buffer, ''); 
                $closingpos = strrpos($buffer, '?'); 
                $buffer = substr($buffer, 0, $openingpos).substr($buffer, $openingpos+5, $closingpos-($openingpos+5)).substr($buffer, $closingpos+5); 
        } 
        $buffer = str_replace('"', """, $buffer); 
        $buffer = str_replace('
', '', $buffer); 
        return $buffer; 

//------- 结束

二、PHP include JS文件

3.世襲改过include/discuzcode.func.php
  查找
复制代码 代码如下:
$message = preg_replace("/s*[code](.+?)[/code]s*/ies", "codedisp('\1')", $message);

经过html写javascript引进二个php的链接,该php实际上是生成js的公文:

在其下部继续增进:
复制代码 代码如下:
//------- runcode 
$message = preg_replace("/s*[runcode](.+?)[/runcode]s*/ies", "runcodedisp('\1')", $message); 
//------- php 
$message = preg_replace("/s*[php](.+?)[/php]s*/ies", "phpcodedisp('\1')", $message);

复制代码 代码如下:

if (20 == $ad_type_id) { // 对联
 ob_start ();
 include TMPL_PATH . 'Code/duilian.js';
 header("content-type: application/x-javascript");
 $code = ob_get_clean ();
 echo $code;
}

在php里面include js文件,js里面包车型客车var swf那样的变量,var swf = ‘‘,这里运用ob缓存,注意加上header(“content-type: application/x-javascript”卡塔尔国,让浏览器知道那是个javascript的剧本文件。

页面上这么引用:

复制代码 代码如下:

<script src="" language="JavaScript"></script>

本文由10bet手机官网发布于微服架构,转载请注明出处:PHP动态生成javascript文件的2个例子,5的PHP代码高亮显示与实现可运行代码

上一篇:简单的php缓存类分享,php文件操作类 下一篇:php实现数组筛选奇数和偶数示例,php实现的树形结构数据存取类实例10bet手机官网:
猜你喜欢
热门排行
精彩图文