International PHP Conference Berlin 2023

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
6 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