在 PHP 專案使用 OpenCC 開放中文轉換

前言

以下做法會在 Linux 環境中,透過 nauxliu/opencc4php 開源專案的指示,編譯所需要的 opencc.so 擴充套件。

編譯

使用 Docker 啟動一個 PHP 環境。

1
docker run --rm -it php:8.2-fpm bash

安裝相關指令。

1
apt update && apt install -y libopencc-dev git vim

下載 nauxliu/opencc4php 專案。

1
2
git clone https://github.com/nauxliu/opencc4php.git --depth 1
cd opencc4php

執行編譯腳本。

1
2
3
phpize
./configure
make && make install

編譯後,可以看到擴充套件的資料夾路徑。

1
2
3
4
Libraries have been installed in:
/var/www/html/opencc4php/modules

Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20220829/

檢查是否編譯成功。

1
make test

安裝

查看 php.ini 的路徑。

1
2
3
4
php --ini

Configuration File (php.ini) Path: /usr/local/etc/php
Loaded Configuration File: /usr/local/etc/php/php.ini

修改 php.ini 檔。

1
vim /usr/local/etc/php/php.ini

添加 opencc.sophp.ini 檔。

1
extension=/usr/local/lib/php/extensions/no-debug-non-zts-20220829/opencc.so

執行範例腳本。

1
2
3
php opencc.php

我的滑鼠哪兒去了?

在 Docker 容器使用

下載編譯好的 opencc.so 檔。

1
git clone git@github.com:memochou1993/opencc4php.git

將編譯好的 opencc.so 檔複製到 PHP 專案的 docker/php/modules 資料夾。

1
cp opencc4php/modules/opencc.so docker/php/modules/opencc.so

新增 docker/php/php.ini 檔。

1
extension=/usr/lib/php/modules/opencc.so

修改 Dockerfile 檔。

1
2
3
4
RUN apt-get update && apt-get -y install opencc

COPY ./docker/php/modules/opencc.so /usr/lib/php/modules/opencc.so
COPY ./docker/php/php.ini /usr/local/etc/php/php.ini

在程式中建立 s2t 方法。

1
2
3
4
5
6
7
8
9
10
public static function s2t($content)
{
if (extension_loaded('opencc')) {
$config = opencc_open("s2twp.json");
$text = opencc_convert($content, $config);
opencc_close($config);
return $text;
}
return $content;
}

參考資料