海运的博客

Typecho代码高亮Codebox转SyntaxHighlighter

发布时间:November 9, 2014 // 分类:PHP,Typecho // 1 Comment

由于SQL正则替换不支持反向引用使用PHP读取替换并重新写入数据库:

<?php
$db = 'typecho';
$user = 'root';
$pass = 'password';
try { 
  $dbo = new PDO('mysql:host=localhost;dbname='.$db, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8';"));
} catch (PDOException $e) { 
  $error = $e->getMessage();
  die("PDO Execute Error : ".$error."\n");       
}
$dbo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "SELECT cid,text FROM typecho_contents";
$stmt = $dbo->query($sql);
//$result = $stmt->fetch(PDO::FETCH_ASSOC);
//var_dump($result);
while (list($cid,$text)=$stmt->fetch(PDO::FETCH_NUM)){
  echo $cid."\n";
  $pattern = "/<code\s+?lang=[\'\"](\w+?)[\'\"]>/i";
  //preg_match($pattern, $text, $matches);
  //print_r($matches);
  $text = preg_replace($pattern, "```\$1", $text);
  $text = preg_replace('/<code>/', "```", $text);
  $text = preg_replace('/<\/code>/', "```", $text);
  $text = preg_replace('/^/', '<!--markdown-->', $text);
  $st = $dbo->prepare("UPDATE typecho_contents set `text` = ? where cid = ?");
  $st->bindParam(1, $text);
  $st->bindParam(2, $cid);
  $st->execute();
}

标签:none

有一条 关于" Typecho代码高亮Codebox转SyntaxHighlighter "的评论

  1. Pader

    你网站用 Typecho 建的吗?如何让编辑器支持原生的图片插入,并且支持文字居中,插入视频之类的?

评论已关闭

分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...