ps_hyphenate
(PECL ps >= 1.1.1)
ps_hyphenate — 単語をハイフネーションする
説明
渡された単語をハイフネーションします。ps_hyphenate() は、(ps_set_value() で設定した) hyphenminchars の値と (ps_set_parameter() で設定した) hyphendict パラメータの内容を評価します。 hyphendict は、この関数を呼ぶ前に必ず設定しておかなければなりません。
この関数を利用するためには、LC_CTYPE
が適切に設定されている必要があります。
PostScript 拡張が初期化される際、環境変数の値が利用されます。
Unix 環境を利用している方は、詳細な情報は locale の man ページを見てください。
パラメータ
psdoc
-
ps_new() が返す、postscript ファイルのリソース ID。
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
+add a note
User Contributed Notes 1 note
1manfactory at gmail dot com ¶
8 years ago
The above example does NOT work with German Umlauts (äöü) properly.
I had to do the following to make it work.
setlocale (LC_CTYPE , "de_DE.iso88591"); # it does not work with "de_DE.utf8" and of course your system should run this locale setting
$hyphens = ps_hyphenate($psdoc, utf8_decode($word)); # only our couse if your source code is UTF8 coded
for($i=0; $i<mb_strlen($word); $i++) { # to be on the safe side
echo utf8_encode($word[$i]); # again only if your code is UTF8