PHP foreach所有字符

PHP foreach all characters

到目前为止我有这个:

foreach (range('A', 'Z') as $char) {
    echo $char . "\n";
}

并打印出字母表。

但我需要一些能够包含完整的字母、数字、符号和外来字符的东西。

假设我正在尝试获取基本拉丁语部分中每个人类可读的 UTF-8 字符。

这可能吗?如果可以,我需要做什么?

range 函数遍历 ASCII 个字符。使用您想要的第一个和最后一个。我在这里使用 !~.

foreach (range('!', '~') as $char) {
    echo $char . "\n";
}

输出:

! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ 

或者,您也可以使用 forchr,如下所示。

for($i = 1; $i <= 255; $i++) {
    echo chr($i);
}

有 232 > 40 亿个 Unicode 字符。其中大部分尚未使用或分配,但即使是前 216 也可能比您想要的多得多。

这是一个将输出字符 32-2047 的示例,但当然还有许多超出 2047 的文本字符(尽管大多数是非拉丁字符)。

$s = "All characters: ";

for ($c=32; $c<2047; $c++)
{
    $s .= json_decode('"\u'.bin2hex(pack('n', $c)).'"');
}

print($s);