1--TEST-- 2IntlChar basic functionality 3--SKIPIF-- 4<?php if (!extension_loaded('intl')) die("skip requires ext/intl") ?> 5--FILE-- 6<?php 7 8function unicode_info($cp) { 9 $proplist = array( 10 IntlChar::PROPERTY_ALPHABETIC, 11 ); 12 $methodList = array( 13 'isUAlphabetic', 14 'isUUppercase', 'isupper', 15 'isULowercase', 'islower', 16 'isUWhiteSpace', 'isWhitespace', 17 'istitle', 'isdigit', 'isalpha', 'isalnum', 18 'isxdigit', 'ispunct', 'ispunct', 'isgraph', 19 'isblank', 'isdefined', 'isspace', 'iscntrl', 20 'isMirrored', 'isIDStart', 'isIDPart', 21 'getBlockCode', 'charName', 22 ); 23 24 $ncp = IntlChar::ord($cp); 25 printf("Codepoint U+%04x\n", $ncp); 26 27 foreach($proplist as $prop) { 28 printf(" hasBinaryProperty(%s): %s\n", 29 IntlChar::getPropertyName($prop), 30 IntlChar::hasBinaryProperty($cp, $prop) ? "true" : "false" 31 ); 32 } 33 foreach($methodList as $method) { 34 echo " $method(): "; 35 var_dump(IntlChar::$method($cp)); 36 } 37 echo " charAge(): ", implode('.', IntlChar::charAge($cp)), "\n"; 38 echo "\n"; 39} 40 41printf("Codepoint range: %04x-%04x\n", IntlChar::CODEPOINT_MIN, IntlChar::CODEPOINT_MAX); 42$codepoints = array('P', 0xDF, 0x2603); 43foreach($codepoints as $cp) { 44 unicode_info($cp); 45} 46echo "Sample range of codepoints: U+2600-U+260F\n"; 47IntlChar::enumCharNames(0x2600, 0x2610, function($cp, $nc, $name) { 48 printf("U+%04x %s\n", $cp, $name); 49}); 50echo "RECYCLING SYMBOL FOR TYPE-1 PLASTICS => "; 51var_dump(IntlChar::charFromName("RECYCLING SYMBOL FOR TYPE-1 PLASTICS")); 52?> 53--EXPECT-- 54Codepoint range: 0000-10ffff 55Codepoint U+0050 56 hasBinaryProperty(Alphabetic): true 57 isUAlphabetic(): bool(true) 58 isUUppercase(): bool(true) 59 isupper(): bool(true) 60 isULowercase(): bool(false) 61 islower(): bool(false) 62 isUWhiteSpace(): bool(false) 63 isWhitespace(): bool(false) 64 istitle(): bool(false) 65 isdigit(): bool(false) 66 isalpha(): bool(true) 67 isalnum(): bool(true) 68 isxdigit(): bool(false) 69 ispunct(): bool(false) 70 ispunct(): bool(false) 71 isgraph(): bool(true) 72 isblank(): bool(false) 73 isdefined(): bool(true) 74 isspace(): bool(false) 75 iscntrl(): bool(false) 76 isMirrored(): bool(false) 77 isIDStart(): bool(true) 78 isIDPart(): bool(true) 79 getBlockCode(): int(1) 80 charName(): string(22) "LATIN CAPITAL LETTER P" 81 charAge(): 1.1.0.0 82 83Codepoint U+00df 84 hasBinaryProperty(Alphabetic): true 85 isUAlphabetic(): bool(true) 86 isUUppercase(): bool(false) 87 isupper(): bool(false) 88 isULowercase(): bool(true) 89 islower(): bool(true) 90 isUWhiteSpace(): bool(false) 91 isWhitespace(): bool(false) 92 istitle(): bool(false) 93 isdigit(): bool(false) 94 isalpha(): bool(true) 95 isalnum(): bool(true) 96 isxdigit(): bool(false) 97 ispunct(): bool(false) 98 ispunct(): bool(false) 99 isgraph(): bool(true) 100 isblank(): bool(false) 101 isdefined(): bool(true) 102 isspace(): bool(false) 103 iscntrl(): bool(false) 104 isMirrored(): bool(false) 105 isIDStart(): bool(true) 106 isIDPart(): bool(true) 107 getBlockCode(): int(2) 108 charName(): string(26) "LATIN SMALL LETTER SHARP S" 109 charAge(): 1.1.0.0 110 111Codepoint U+2603 112 hasBinaryProperty(Alphabetic): false 113 isUAlphabetic(): bool(false) 114 isUUppercase(): bool(false) 115 isupper(): bool(false) 116 isULowercase(): bool(false) 117 islower(): bool(false) 118 isUWhiteSpace(): bool(false) 119 isWhitespace(): bool(false) 120 istitle(): bool(false) 121 isdigit(): bool(false) 122 isalpha(): bool(false) 123 isalnum(): bool(false) 124 isxdigit(): bool(false) 125 ispunct(): bool(false) 126 ispunct(): bool(false) 127 isgraph(): bool(true) 128 isblank(): bool(false) 129 isdefined(): bool(true) 130 isspace(): bool(false) 131 iscntrl(): bool(false) 132 isMirrored(): bool(false) 133 isIDStart(): bool(false) 134 isIDPart(): bool(false) 135 getBlockCode(): int(55) 136 charName(): string(7) "SNOWMAN" 137 charAge(): 1.1.0.0 138 139Sample range of codepoints: U+2600-U+260F 140U+2600 BLACK SUN WITH RAYS 141U+2601 CLOUD 142U+2602 UMBRELLA 143U+2603 SNOWMAN 144U+2604 COMET 145U+2605 BLACK STAR 146U+2606 WHITE STAR 147U+2607 LIGHTNING 148U+2608 THUNDERSTORM 149U+2609 SUN 150U+260a ASCENDING NODE 151U+260b DESCENDING NODE 152U+260c CONJUNCTION 153U+260d OPPOSITION 154U+260e BLACK TELEPHONE 155U+260f WHITE TELEPHONE 156RECYCLING SYMBOL FOR TYPE-1 PLASTICS => int(9843) 157