分享:在php的输出缓冲区里写org | 文学编程转org为htm文本

应该没人会这么做, 但我这样做了两三年了, 用于在emacs之外仅只有浏览器可以用时看org写的内容.

注: 对其它人大概是不适用的,或者是没法做到,又或者看不懂我写的(需要会php).

我有一些org文件的后缀名是php, 我在开头第一行写上 * <?php /*-*-org-*-*/ ob_clean();ob_start(); ?>, 这样emacs打开就会用org-mode渲染了, 把org内容移进来, org文件的最后这么写

* <?php
#+BEGIN_SRC php
# org的注释是#开头,php的注释也是#开头的,可以通用
#+END_SRC

里面的php代码做的事: 用ob_get_clean() 获取输出缓冲区里的org文本插入一些div标签在输出到到浏览器,css+js引入

引入js做的事: 轮循服务端php获取org文本的md5值, 用于org内容改了后页面自动刷新.

第一行的 ob_start(); 新建输出缓冲区, 我开始没写, org内容多了后会出现缓冲区内容丢失, 忘记是内容大于多少kb会出现了(也可能新版php修复了这个问题).

虽然这么做了很久, 但一直都是简单加几个div标签进去,效果原生, 至今也没能写一个org转htm的模板出来. 没通用性,php code也就不发出来了.

如果也有人喜欢这么做,或者我那天真能写一个org转htm的模板出来, 再来发

---------------- 更新 ----------------

只要是用php写过网站的人对这种用法应该都不会陌生, 遇到复杂的前端页面时, div层层嵌套本身已经较为混乱了, 在把php也加进去代码结构就更乱了, 如果js也在一个页面的话…, 不知有多少phper受过此折磨.

我把html换成了org, 意外的感觉很舒爽, 笔记部分,代码部分,预处理脚本部分还是全写在一个文件里面, 但并无混乱感.

不足之处是: 和php绑定越来越深了, php+org看起来居然也搭. 按理说和org最搭的应该是elisp, 就如同html与js的关系.

仔细想下,org和elisp绑定越深可能并不利于org的流行, 有些emacs之外的org实现, 不如人意的地方一般认为是没有elisp, 而要用elisp就只能用emacs, 这个不足我理解不是没有elisp,而是没有一个能与之完美结合的脚本语言可用

最初的html是没有js的, 功能有限, html在加上一门脚本语言后才开始真正流行起来,记得这类语言除了js外好像还有很多但最终只留下了js.

所以org搭配一个脚本语言一起用是合理的, 也许这才是org-mode直正的打开方式

3 个赞

好奇这里的PHP项目是如何部署,以及如何路由笔记文件?

在配好php的apache或nginx里指定好网站根目录,在把php文件放到网站根目录下面, 如路径是d:/www/f/china.php, d:/www 为网站根目录,那路由就是 http://ip地址/f/china.php

1 个赞