2024年PHP开发者大会日本站

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手册页以了解更多信息。

参数

psdoc

PostScript 文件的资源标识符,由 ps_new() 返回。

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 条注释

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