centOS8でgohtmlをインストールしてPHPでHTML整形をしよう!
PHPでHTML整形するとなると意外とだるいんすよね・・・。そこで!gohtmlなるオープンソースを発見いたしました。かなり使い方が簡単なので潤を追って説明いたします。
GitHub - yosssi/gohtml: HTML formatter for Go
目次
- gohtmlをインストールする下準備
- Goインストール
- gohtmlインストール
- goファイル作成
- goを実行してHTML整形
- PHPでgohtmlを使用する
- PHPで実行
- 動的に特定のHTMLを整形する場合
- 参考になった記事
- まとめ
gohtmlをインストールする下準備
// gitインストール
dnf install git
// epelリポジトリインストール
dnf install epel-release
Goインストール
// goインストール
dnf install golang
gohtmlインストール
go get -u github.com/yosssi/gohtml
goファイル作成
一旦適当なHTMLを整形するためのgoファイルを作成いたします。
vi test.go
↓↓中身↓↓
package main
import (
"fmt"
"github.com/yosssi/gohtml"
)
func main() {
h := `<!DOCTYPE html><html><head><title>This is a title.</title><script type="text/javascript">
alert("aaa");
if (0 < 1) {
alert("bbb");
}
</script><style type="text/css">
body {font-size: 14px;}
h1 {
font-size: 16px;
font-weight: bold;
}
</style></head><body><form><input type="name"><p>AAA<br>BBB></p></form><!-- This is a comment. --></body></html>`
fmt.Println(gohtml.Format(h))
}
goを実行してHTML整形
// 実行
go run test.go
結果↓↓
<!DOCTYPE html>
<html>
<head>
<title>
This is a title.
</title>
<script type="text/javascript">
alert("aaa");
if (0 < 1) {
alert("bbb");
}
</script>
<style type="text/css">
body {font-size: 14px;}
h1 {
font-size: 16px;
font-weight: bold;
}
</style>
</head>
<body>
<form>
<input type="name">
<p>
AAA
<br>
BBB>
</p>
</form>
<!-- This is a comment. -->
</body>
</html>
やばくないですか?めっちゃ綺麗に整形されました!
PHPでgohtmlを使用する
ここからが本題です。
visudo
root ALL=(ALL) ALL
の下に
apache ALL=NOPASSWD: /usr/bin/go
を記述
PHPで実行
$output = Shell_exec("sudo /usr/bin/go run /var/www/html/go/gohtml/test.go");
動的に特定のHTMLを整形する場合
<?php
$filename = 'goファイルを置きたい場所';
$html = '整形したいHTML';
$go_content = "package main
import (
"fmt"
"github.com/yosssi/gohtml"
)
func main() {
h := ".$html."
fmt.Println(gohtml.Format(h))
}";
// goファイル作成or上書き
file_put_contents($filename, $go_content);
$html = Shell_exec('sudo /usr/bin/go run /var/www/html/go/gohtml/gohtml.go');
// 削除
unlink(PATH.'go/gohtml/gohtml.go');
参考になった記事
コマンド:sudo: UNIX/Linuxの部屋まとめ
PHPの凄いところって全ての言語を横断できるところだと思います。便利なオープンソースがあれば全て吸収して取り入れられるので足りてない部分は全て他の言語に任せる事が可能です。今回もPHPにはHTMLを整形するデフォルトの関数がなかったためgohtmlを利用させていただきました。
CMSの悩みはBasicで一気に解決しましょう
- 完全無料Basicはオープンソースで運営されています。誰しもが自由にBasicを利用できます。
- 超軽量化で超高速配信通常のCMSよりページ容量を70%以上を自動で圧縮を行い更に自動で静的化・圧縮化されたページが配信されます。
- SEOにつよつよ70%以上軽量化に加えて最新SEOに対応した構造で静的化・圧縮化されたページはライバルサイトより圧倒的に評価されます
ライバルサイトより一歩前にいけるCMSでサイトを構築しませんか?