- strcmp: documentation ( source)
- array_filter: documentation ( source)
- preg_split: documentation ( source)
- usort: documentation ( source)
- strtolower: documentation ( source)
<?php
$x = '
6 \ntriangleleft 7 \ntriangleright 8 \nleftarrow
9 \nrightarrow : \nLeftarrow ; \nRightarrow
< \nLeftrightarrow = \nleftrightarrow > \divideontimes
? \varnothing @ \nexists ` \Finv
a \Game 0 \mho ð \eth
h \eqsim i \beth j \gimel
k \daleth l \lessdot m \gtrdot
n \ltimes o \rtimes p \shortmid
q \shortparallel r \smallsetminus s \thicksim
t \thickapprox u \approxeq v \succapprox
w \precapprox x \curvearrowleft y \curvearrowright
z \digamma { \varkappa k \Bbbk
} \hslash ~ \hbar \backepsilon
4 \preccurlyeq 5 \leqq 6 \leqslant
7 \lessgtr 8 \backprime : \risingdotseq
; \fallingdotseq < \succcurlyeq = \geqq
> \geqslant ? \gtrless < \sqsubset
= \sqsupset B \vartriangleright C \vartriangleleft
D \trianglerighteq E \trianglelefteq F \bigstar
G \between H \blacktriangledown I \blacktriangleright
J \blacktriangleleft M \vartriangle N \blacktriangle
O \triangledown P \eqcirc Q \lesseqgtr
R \gtreqless S \lesseqqgtr T \gtreqqless
V \Rrightarrow W \Lleftarrow Y \veebar
Z \barwedge [ \doublebarwedge \ \angle
] \measuredangle ^ \sphericalangle _ \varpropto
` \smallsmile a \smallfrown b \Subset
c \Supset d \Cup d \doublecup
e \Cap e \doublecap f \curlywedge
g \curlyvee h \leftthreetimes i \rightthreetimes
j \subseteqq k \supseteqq l \bumpeq
m \Bumpeq n \lll n \llless
o \ggg o \gggtr s \circledS
t \pitchfork u \dotplus v \backsim
w \backsimeq { \complement | \intercal
} \circledcirc ~ \circledast \circleddash
\lvertneqq \gvertneqq \nleq
\ngeq \nless \ngtr
\nprec \nsucc \lneqq
\gneqq
\nleqslant \ngeqslant
\lneq
\gneq \npreceq
\nsucceq \precnsim \succnsim
\lnsim \gnsim \nleqq
\ngeqq \precneqq \succneqq
\precnapprox \succnapprox \lnapprox
\gnapprox \nsim \ncong
\diagup \diagdown \varsubsetneq
! \varsupsetneq " \nsubseteqq # \nsupseteqq
$ \subsetneqq % \supsetneqq & \varsubsetneqq
\varsupsetneqq ( \subsetneq ) \supsetneq
* \nsubseteq + \nsupseteq , \nparallel
- \nmid . \nshortmid / \nshortparallel
0 \nvdash 1 \nVdash 2 \nvDash
3 \nVDash 4 \ntrianglerighteq 5 \ntrianglelefteq
2
\boxdot \boxplus \boxtimes
\square \blacksquare \centerdot
\lozenge \blacklozenge \circlearrowright
\circlearrowleft
\rightleftharpoons \leftrightharpoons
\boxminus
\Vdash \Vvdash
\vDash \twoheadrightarrow \twoheadleftarrow
\leftleftarrows \rightrightarrows \upuparrows
\downdownarrows \upharpoonright \restriction
\downharpoonright \upharpoonleft \downharpoonleft
\rightarrowtail \leftarrowtail \leftrightarrows
\rightleftarrows \Lsh \Rsh
\rightsquigarrow ! \leftrightsquigarrow " \looparrowleft
# \looparrowright $ \circeq % \succsim
& \gtrsim \gtrapprox ( \multimap
) \therefore * \because + \doteqdot
+ \Doteq , \triangleq - \precsim
. \lesssim / \lessapprox 0 \eqslantless
1 \eqslantgtr 2 \curlyeqprec 3 \curlyeqsucc
1
';
$x = array_filter(preg_split('/\s+/', $x));
usort($x, function ($a, $b) {
return strcmp(strtolower($a), strtolower($b));
});
foreach ($x as $xx) {
echo $xx, "\n";
}