Longhorn PHP 2019 CFP is open!

grapheme_extract

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

grapheme_extractUTF-8 kodlanmış bir metin tamponundan öntanımlı sesletim kümelerinden oluşan bir dizilimi döndürür

Açıklama

Yordamsal kullanım

string grapheme_extract ( string $samanlık , int $boyut [, int $birim [, int $başlangıç [, int &$sonraki ]]] )

UTF-8 kodlanmış bir metin tamponundan öntanımlı sesletim kümelerinden oluşan bir dizilimi döndürür.

Değiştirgeler

samanlık

Aramanın yapılacağı dizge.

boyut

Döndürülecek azami birim sayısı.

birim

boyut değiştirgesini oluşturacak birim türü:

  • GRAPHEME_EXTR_COUNT (öntanımlı) - boyut, döndürülecek öntanımlı sesletim kümesi sayısıdır.
  • GRAPHEME_EXTR_MAXBYTES - boyut, döndürülecek azami bayt sayısıdır.
  • GRAPHEME_EXTR_MAXCHARS - boyut, döndürülecek UTF-8 karakterlerin azami sayısıdır.
başlangıç

Bayt cinsinden aramanın başlatılacağı konum. Belirtildiği takdirde, sıfır veya samanlık uzunluğuna eşit veya daha küçük bir pozitif tamsayı olmalıdır. başlangıç bir UTF-8 karakterin ilk baytı değilse, sonraki karakterin ilk baytına taşınır.

sonraki

Sonraki aramanın başlangıç konumu. Çağrı sonunda dönen dizgenin son karakterinden sonraki ilk baytın konumu olacaktır.

Dönen Değerler

Belirtilen başlangıç konumunda başlayıp, boyut ve birim değiştirgelerine göre uzunluğu belirlenen bir öntanımlı sesletim kümesini içeren bir dizge ile döner.

Örnekler

Örnek 1 - grapheme_extract() örneği

<?php
$char_a_ring_nfd 
"a\xCC\x8A";      // 'å' (U+00E5) normalleştirme biçimi "D"
$char_o_diaeresis_nfd "o\xCC\x88"// 'ö' (U+00F6) normalleştirme biçimi "D"

print urlencode(grapheme_extract$char_a_ring_nfd $char_o_diaeresis_nfd1,
                                  
GRAPHEME_EXTR_COUNT2));

?>

Yukarıdaki örneğin çıktısı:

o%CC%88
add a note add a note

User Contributed Notes 1 note

up
5
AJH
7 years ago
Here's how to use grapheme_extract() to loop across a UTF-8 string character by character.

<?php

$str
= "سabcक’…";
// if the previous line didn't come through, the string contained:
//U+0633,U+0061,U+0062,U+0063,U+0915,U+2019,U+2026

$n = 0;

for (   
$start = 0, $next = 0, $maxbytes = strlen($str), $c = '';
       
$start < $maxbytes;
       
$c = grapheme_extract($str, 1, GRAPHEME_EXTR_MAXCHARS , ($start = $next), $next)
    )
{
    if (empty(
$c))
        continue;
    echo
"This utf8 character is " . strlen($c) . " bytes long and its first byte is " . ord($c[0]) . "\n";
   
$n++;
}
echo
"$n UTF-8 characters in a string of $maxbytes bytes!\n";
// Should print: 7 UTF8 characters in a string of 14 bytes!
?>
To Top