centOS8でgohtmlをインストールしてPHPでHTML整形をしよう!

著者:
投稿日:
更新日:

PHPでHTML整形するとなると意外とだるいんすよね・・・。そこで!gohtmlなるオープンソースを発見いたしました。かなり使い方が簡単なので潤を追って説明いたします。


GitHub - yosssi/gohtml: HTML formatter for Go
目次
  1. gohtmlをインストールする下準備
  2. Goインストール
  3. gohtmlインストール
  4. goファイル作成
  5. goを実行してHTML整形
  6. PHPでgohtmlを使用する
    1. PHPで実行
    2. 動的に特定のHTMLを整形する場合
  7. 参考になった記事
  8. まとめ

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で一気に解決しましょう
  1. 完全無料
    Basicはオープンソースで運営されています。誰しもが自由にBasicを利用できます。
  2. 超軽量化で超高速配信
    通常のCMSよりページ容量を70%以上を自動で圧縮を行い更に自動で静的化・圧縮化されたページが配信されます。
  3. SEOにつよつよ
    70%以上軽量化に加えて最新SEOに対応した構造で静的化・圧縮化されたページはライバルサイトより圧倒的に評価されます
  4. ライバルサイトより一歩前にいけるCMSでサイトを構築しませんか?

    →より詳しく

著者プロフィール
松岡宗谷

Basic https://basic.dance/ を運営しています。スペースナビ 代表取締役。スタートアップ界隈でCTO→Sharetube創業→スペースナビ創業→UXSEOリリース、ResizeCDNリリース、あまてむリリース。世界で最もSEOに効くCMS Basicリリース。個人の夢は完全義体化。会社の夢は宇宙事業。プログラマーは死ぬまで現役でありたい