PHP Conference Japan 2024

ps_hyphenate

(PECL ps >= 1.1.1)

ps_hyphenate將單字斷字

描述

ps_hyphenate(資源 $psdoc, 字串 $text): 陣列|false

將傳入的單字斷字。 ps_hyphenate() 會評估 hyphenminchars 的值(由 ps_set_value() 設定)和 hyphendict 參數(由 ps_set_parameter() 設定)。 必須在呼叫此函式之前設定 hyphendict。

這個函式需要正確設定地區分類LC_CTYPE。這是透過使用環境變數在擴充功能初始化時完成的。在 Unix 系統上,請閱讀 locale 的 man 頁面以取得更多資訊。

參數

psdoc

ps_new() 返回的 PostScript 檔案資源識別碼。

text

text 不應包含任何非字母字元。可能的斷行位置會以整數陣列的形式返回。每個數字都是 text 中字元的位置,可在其後進行斷字。

回傳值

一個整數陣列,指示文字中可能斷行的位置,或在失敗時返回 false

範例

範例 #1 斷字

<?php
$word
= "Koordinatensystem";
$psdoc = ps_new();
ps_set_parameter($psdoc, "hyphendict", "hyph_de.dic");
$hyphens = ps_hyphenate($psdoc, $word);
for(
$i=0; $i<strlen($word); $i++) {
echo
$word[$i];
if(
in_array($i, $hyphens))
echo
"-";
}
ps_delete($psdoc);
?>

上述範例將輸出

Ko-ordi-na-ten-sys-tem

參見

新增註記

使用者貢獻的註記 1 則註記

1
1manfactory at gmail dot com
8 年前
上述範例無法正確處理德語變音符號 (äöü)。

我必須執行以下操作才能使其正常運作。

setlocale (LC_CTYPE , "de_DE.iso88591"); # 使用 "de_DE.utf8" 無法正常運作,當然您的系統應該執行此地區設定

$hyphens = ps_hyphenate($psdoc, utf8_decode($word)); # 僅在您的原始碼是 UTF8 編碼時才適用

for($i=0; $i<mb_strlen($word); $i++) { # 為了安全起見

echo utf8_encode($word[$i]); # 再次僅在您的程式碼是 UTF8 時才適用
To Top