PHP 8.1.28 Released!

ps_hyphenate

(PECL ps >= 1.1.1)

ps_hyphenateПереносит слово

Описание

ps_hyphenate(resource $psdoc, string $text): array|false

Переносит указанное слово. Функция ps_hyphenate() оценивает дефисы значения (устанавливается ps_set_value()) и дефисы параметра (устанавливается ps_set_parameter()). Перед вызовом этой функции необходимо установить дефис.

Для работы функции требуется, чтобы категорию языкового стандарта LC_CTYPE установили корректно. Это делается при инициализации модуля с использованием переменных окружения. В системах Unix дополнительную информацию дают справочные страницы языковых стандартов.

Список параметров

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

Смотрите также

add a note

User Contributed Notes 1 note

up
1
1manfactory at gmail dot com
7 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
To Top