(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
token_get_all — Belirtilen kaynağı PHP dizgeciklerine ayırır
Belirtilen kod
dizgesi, Zend motorunun sözdizimsel tarayıcısı kullanılarak PHP dil dizgeciklerine çözümlenir.
Dizgeciklerin listesi için Çözümleyici Dizgeciklerinin Listesi sayfasına bakınız veya bir dizgecik değerini dizgesel gösterimine dönüştürmek için token_name() işlevini kullanınız.
kod
Çözümlenecek PHP kaynak kodu.
seçenekler
Geçerli seçenekler:
TOKEN_PARSE
- Belirli bağlamlarda dahili kullanıma ayrılmış sözcükleri kullanma yeteneğini onaylar. Dizgecik betimleyicilerinden oluşan bir dizi. Her dizgecik betimleyicisi ya tek bir karakterden (;
, .
, >
, !
gibi) oluşur ya da üç elemanlı bir diziden; 0. elemanda dizgecik indisi, 1. elemanda özgün dizgeciğin dizgesel içeriği ve 2. elemanda satır numarası bulunur.
Örnek 1 - token_get_all() örneği
<?php
$tokens = token_get_all('<?php echo; ?>');
foreach ($tokens as $token) {
if (is_array($token)) {
echo "Line {$token[2]}: ", token_name($token[0]), " ('{$token[1]}')", PHP_EOL;
}
}
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Line 1: T_OPEN_TAG ('<?php ') Line 1: T_ECHO ('echo') Line 1: T_WHITESPACE (' ') Line 1: T_CLOSE_TAG ('?>')
Örnek 2 - token_get_all() yanlış kullanım örneği
<?php
$tokens = token_get_all('');
foreach ($tokens as $token) {
if (is_array($token)) {
echo "Line {$token[2]}: ", token_name($token[0]), " ('{$token[1]}')", PHP_EOL;
}
}
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Line 1: T_INLINE_HTML ('')
T_COMMENT
ile değil T_INLINE_HTML
ile çözümlenmiştir.Bunun sebebi sağlanan kodda hiç başlangıç etiketi bulunmamasıdır. Bu, normal bir dosyada PHP etiketlerinin dışına bir açıklama koymaya eşdeğerdir. Örnek 3 - Dahili kullanıma ayrılmış sözcük kullanan sınıf üzerinde token_get_all()
<?php
$source = <<<'code'
<?php
class A
{
const PUBLIC = 1;
}
code;
$tokens = token_get_all($source, TOKEN_PARSE);
foreach ($tokens as $token) {
if (is_array($token)) {
echo token_name($token[0]) , PHP_EOL;
}
}
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
T_OPEN_TAG T_WHITESPACE T_CLASS T_WHITESPACE T_STRING T_CONST T_WHITESPACE T_STRING T_LNUMBER
TOKEN_PARSE
olmaksızın, sondan bir önceki simgeleştirici (T_STRING
) T_PUBLIC
olurdu.