Mempertimbangkan:
$a = 'How are you?';
if ($a contains 'are')
echo 'true';
Misalkan saya memiliki kode di atas, apa cara yang benar untuk menulis pernyataan if ($a contains 'are')
?
Mempertimbangkan:
$a = 'How are you?';
if ($a contains 'are')
echo 'true';
Misalkan saya memiliki kode di atas, apa cara yang benar untuk menulis pernyataan if ($a contains 'are')
?
Jawaban:
Anda dapat menggunakan strpos()
fungsi yang digunakan untuk menemukan kemunculan satu string di dalam yang lain:
$a = 'How are you?';
if (strpos($a, 'are') !== false) {
echo 'true';
}
Perhatikan bahwa penggunaan !== false
disengaja (tidak != false
juga tidak === true
akan mengembalikan hasil yang diinginkan); strpos()
mengembalikan offset di mana string jarum dimulai di string tumpukan jerami, atau boolean false
jika jarum tidak ditemukan. Karena 0 adalah offset yang valid dan 0 adalah "falsey", kami tidak dapat menggunakan konstruksi yang lebih sederhana seperti !strpos($a, 'are')
.
strpos($a, 'are') > -1
untuk menguji kebenaran. Dari perspektif debugging, saya menemukan otak saya buang lebih sedikit siklus clock menentukan apakah garis ditulis dengan benar ketika saya tidak harus menghitung tanda sama dengan yang berdekatan.
Anda dapat menggunakan ekspresi reguler, lebih baik untuk pencocokan kata dibandingkan dengan yang strpos
disebutkan oleh pengguna lain, itu juga akan mengembalikan true untuk string seperti tarif, perawatan, tatapan, dll. Ini hanya dapat dihindari dalam ekspresi reguler dengan menggunakan batas kata.
Pasangan yang cocok untuk dapat terlihat seperti ini:
$a = 'How are you?';
if (preg_match('/\bare\b/', $a)) {
echo 'true';
}
Di sisi kinerja, strpos
sekitar tiga kali lebih cepat dan ada dalam pikiran, ketika saya melakukan satu juta membandingkan sekaligus, butuh preg_match
1,5 detik untuk menyelesaikan dan untuk strpos
itu butuh 0,5 detik.
Sunting: Untuk mencari bagian mana pun dari string, bukan hanya kata demi kata, saya akan merekomendasikan menggunakan ungkapan biasa seperti
$a = 'How are you?';
$search = 'are y';
if(preg_match("/{$search}/i", $a)) {
echo 'true';
}
Pada i
akhir ekspresi reguler mengubah ekspresi reguler menjadi tidak peka huruf besar-kecil, jika Anda tidak menginginkannya, Anda dapat mengabaikannya.
Sekarang, ini bisa sangat bermasalah dalam beberapa kasus karena $ string pencarian tidak dibersihkan dengan cara apa pun, maksud saya, mungkin tidak lulus pemeriksaan dalam beberapa kasus seolah-olah $search
input pengguna mereka dapat menambahkan beberapa string yang mungkin berperilaku seperti beberapa ekspresi reguler yang berbeda ...
Juga, inilah alat yang hebat untuk menguji dan melihat penjelasan berbagai ekspresi reguler Regex101
Untuk menggabungkan kedua set fungsionalitas menjadi fungsi multi-fungsi tunggal (termasuk dengan sensitivitas case yang dapat dipilih), Anda dapat menggunakan sesuatu seperti ini:
function FindString($needle,$haystack,$i,$word)
{ // $i should be "" or "i" for case insensitive
if (strtoupper($word)=="W")
{ // if $word is "W" then word search instead of string in string search.
if (preg_match("/\b{$needle}\b/{$i}", $haystack))
{
return true;
}
}
else
{
if(preg_match("/{$needle}/{$i}", $haystack))
{
return true;
}
}
return false;
// Put quotes around true and false above to return them as strings instead of as bools/ints.
}
Berikut adalah sedikit fungsi utilitas yang berguna dalam situasi seperti ini
// returns true if $needle is a substring of $haystack
function contains($needle, $haystack)
{
return strpos($haystack, $needle) !== false;
}
if ($email->contains("@") && $email->endsWith(".com)) { ...
atauif (strpos($email, "@") !== false && substr($email, -strlen(".com")) == ".com") { ...
Meskipun sebagian besar jawaban ini akan memberi tahu Anda jika substring muncul di string Anda, biasanya itu bukan yang Anda inginkan jika Anda mencari kata tertentu , dan bukan substring .
Apa bedanya? Substring dapat muncul dengan kata lain:
Salah satu cara untuk mengurangi ini adalah dengan menggunakan ekspresi reguler ditambah dengan batas kata ( \b
):
function containsWord($str, $word)
{
return !!preg_match('#\\b' . preg_quote($word, '#') . '\\b#i', $str);
}
Metode ini tidak memiliki positif palsu yang sama dengan yang disebutkan di atas, tetapi metode ini memiliki beberapa kasus tepi sendiri. Batas kata cocok pada karakter non-kata ( \W
), yang akan menjadi sesuatu yang tidak a-z
, A-Z
, 0-9
, atau _
. Itu berarti digit dan garis bawah akan dihitung sebagai karakter kata dan skenario seperti ini akan gagal:
Jika Anda menginginkan sesuatu yang lebih akurat dari ini, Anda harus mulai melakukan parsing sintaksis bahasa Inggris, dan itu adalah sekaleng cacing yang cukup besar (dan mengasumsikan penggunaan sintaks yang tepat, yang tidak selalu diberikan).
\b
cocok dengan dua hal yang \W
tidak, yang membuatnya bagus untuk menemukan kata-kata dalam string: Itu cocok dengan awal string ( ^
) dan akhir string ( $
)
Untuk menentukan apakah string berisi string lain, Anda dapat menggunakan fungsi PHP strpos () .
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
<?php
$haystack = 'how are you';
$needle = 'are';
if (strpos($haystack,$needle) !== false) {
echo "$haystack contains $needle";
}
?>
PERINGATAN:
Jika jarum yang Anda cari ada di awal tumpukan jerami, ia akan kembali ke posisi 0, jika Anda melakukan ==
perbandingan yang tidak berfungsi, Anda harus melakukan===
Sebuah ==
tanda adalah perbandingan dan tes apakah variabel / ekspresi / konstan ke kiri memiliki nilai yang sama sebagai variabel / ekspresi / konstan ke kanan.
Sebuah ===
tanda adalah perbandingan untuk melihat apakah dua variabel / expresions / konstanta yang sama AND
memiliki tipe yang sama - yaitu keduanya string atau keduanya adalah bilangan bulat.
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// Note our use of ===. Simply, == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
echo "The string '$findme' was not found in the string '$mystring'.";
}
else {
echo "The string '$findme' was found in the string '$mystring',";
echo " and exists at position $pos.";
}
?>
Menggunakan strstr()
atau stristr()
jika pencarian Anda harus case-sensitive akan menjadi pilihan lain.
strstr($a, 'are')
jauh lebih elegan daripada yang jelek strpos($a, 'are') !== false
. PHP sangat membutuhkan str_contains()
fungsi.
Manfaatkan pencocokan case-insensitve menggunakan stripos()
:
if (stripos($string,$stringToSearch) !== false) {
echo 'true';
}
Mengintip komentar SamGoody dan Lego Stormtroopr.
Jika Anda mencari algoritma PHP untuk menentukan peringkat hasil pencarian berdasarkan kedekatan / relevansi beberapa kata, inilah cara cepat dan mudah untuk menghasilkan hasil pencarian hanya dengan PHP:
Masalah dengan metode pencarian boolean lain seperti strpos()
, preg_match()
, strstr()
ataustristr()
Metode PHP berdasarkan Vector Space Model dan tf-idf (istilah frekuensi - frekuensi dokumen terbalik):
Kedengarannya sulit tetapi sangat mudah.
Jika kita ingin mencari beberapa kata dalam sebuah string, masalah intinya adalah bagaimana kita memberikan bobot pada masing-masing kata?
Jika kami dapat menimbang istilah dalam string berdasarkan seberapa representatifnya dari string secara keseluruhan, kami dapat memesan hasil kami dengan yang paling cocok dengan kueri.
Ini adalah gagasan model ruang vektor, tidak jauh dari cara kerja pencarian teks lengkap SQL:
function get_corpus_index($corpus = array(), $separator=' ') {
$dictionary = array();
$doc_count = array();
foreach($corpus as $doc_id => $doc) {
$terms = explode($separator, $doc);
$doc_count[$doc_id] = count($terms);
// tf–idf, short for term frequency–inverse document frequency,
// according to wikipedia is a numerical statistic that is intended to reflect
// how important a word is to a document in a corpus
foreach($terms as $term) {
if(!isset($dictionary[$term])) {
$dictionary[$term] = array('document_frequency' => 0, 'postings' => array());
}
if(!isset($dictionary[$term]['postings'][$doc_id])) {
$dictionary[$term]['document_frequency']++;
$dictionary[$term]['postings'][$doc_id] = array('term_frequency' => 0);
}
$dictionary[$term]['postings'][$doc_id]['term_frequency']++;
}
//from http://phpir.com/simple-search-the-vector-space-model/
}
return array('doc_count' => $doc_count, 'dictionary' => $dictionary);
}
function get_similar_documents($query='', $corpus=array(), $separator=' '){
$similar_documents=array();
if($query!=''&&!empty($corpus)){
$words=explode($separator,$query);
$corpus=get_corpus_index($corpus, $separator);
$doc_count=count($corpus['doc_count']);
foreach($words as $word) {
if(isset($corpus['dictionary'][$word])){
$entry = $corpus['dictionary'][$word];
foreach($entry['postings'] as $doc_id => $posting) {
//get term frequency–inverse document frequency
$score=$posting['term_frequency'] * log($doc_count + 1 / $entry['document_frequency'] + 1, 2);
if(isset($similar_documents[$doc_id])){
$similar_documents[$doc_id]+=$score;
}
else{
$similar_documents[$doc_id]=$score;
}
}
}
}
// length normalise
foreach($similar_documents as $doc_id => $score) {
$similar_documents[$doc_id] = $score/$corpus['doc_count'][$doc_id];
}
// sort from high to low
arsort($similar_documents);
}
return $similar_documents;
}
KASUS 1
$query = 'are';
$corpus = array(
1 => 'How are you?',
);
$match_results=get_similar_documents($query,$corpus);
echo '<pre>';
print_r($match_results);
echo '</pre>';
HASIL
Array
(
[1] => 0.52832083357372
)
KASUS 2
$query = 'are';
$corpus = array(
1 => 'how are you today?',
2 => 'how do you do',
3 => 'here you are! how are you? Are we done yet?'
);
$match_results=get_similar_documents($query,$corpus);
echo '<pre>';
print_r($match_results);
echo '</pre>';
HASIL
Array
(
[1] => 0.54248125036058
[3] => 0.21699250014423
)
KASUS 3
$query = 'we are done';
$corpus = array(
1 => 'how are you today?',
2 => 'how do you do',
3 => 'here you are! how are you? Are we done yet?'
);
$match_results=get_similar_documents($query,$corpus);
echo '<pre>';
print_r($match_results);
echo '</pre>';
HASIL
Array
(
[3] => 0.6813781191217
[1] => 0.54248125036058
)
Ada banyak perbaikan yang harus dilakukan tetapi model tersebut menyediakan cara untuk mendapatkan hasil yang baik dari permintaan alami, yang tidak memiliki operator boolean seperti strpos()
, preg_match()
, strstr()
atau stristr()
.
NOTA BENE
Opsional menghilangkan redundansi sebelum mencari kata-kata
dengan demikian mengurangi ukuran indeks dan menghasilkan kebutuhan penyimpanan yang lebih sedikit
lebih sedikit disk I / O
pengindeksan lebih cepat dan pencarian yang lebih cepat akibatnya.
1. Normalisasi
2. Penghapusan stopword
3. Substitusi kamus
Ganti kata dengan yang lain yang memiliki arti identik atau serupa. (mis: ganti contoh 'lapar' dan 'lapar' dengan 'lapar')
Langkah-langkah algoritmik lebih lanjut (bola salju) dapat dilakukan untuk lebih mengurangi kata-kata menjadi arti penting mereka.
Penggantian nama warna dengan padanan heksadesimalnya
Pengurangan nilai numerik dengan mengurangi presisi adalah cara lain untuk menormalkan teks.
SUMBER DAYA
Jika Anda ingin menghindari masalah "falsey" dan "truthy", Anda dapat menggunakan substr_count:
if (substr_count($a, 'are') > 0) {
echo "at least one 'are' is present!";
}
Ini sedikit lebih lambat daripada tegar tetapi menghindari masalah perbandingan.
false
untuk "apakah Anda yakin?" karena posisi strpos
adalah0
Pilihan lain adalah menggunakan fungsi strstr () . Sesuatu seperti:
if (strlen(strstr($haystack,$needle))>0) {
// Needle Found
}
Poin yang perlu diperhatikan: Fungsi strstr () peka huruf besar-kecil. Untuk pencarian case-insensitive, gunakan fungsi stristr () .
Saya agak terkesan bahwa tidak ada jawaban di sini yang digunakan strpos
, strstr
dan fungsi yang serupa disebutkan Multibyte String Functions yet (2015-05-08).
Pada dasarnya, jika Anda kesulitan menemukan kata-kata dengan karakter khusus untuk beberapa bahasa , seperti Jerman, Prancis, Portugis, Spanyol, dll. (Mis: ä , é , ô , ç , º , º , ñ ), Anda mungkin ingin mengawali fungsi dengan mb_
. Oleh karena itu, jawaban yang diterima akan menggunakan mb_strpos
atau mb_stripos
(untuk pencocokan case-sensitive) sebagai gantinya:
if (mb_strpos($a,'are') !== false) {
echo 'true';
}
Jika Anda tidak dapat menjamin bahwa semua data Anda 100% di UTF-8 , Anda mungkin ingin menggunakan mb_
fungsinya.
Sebuah artikel yang bagus untuk memahami mengapa Minimum Yang Mutlak Setiap Pengembang Perangkat Lunak, Pasti Harus Tahu Tentang Unicode dan Karakter Set (Tanpa Alasan!) Oleh Joel Spolsky .
Di PHP, cara terbaik untuk memverifikasi apakah string berisi substring tertentu, adalah dengan menggunakan fungsi pembantu sederhana seperti ini:
function contains($haystack, $needle, $caseSensitive = false) {
return $caseSensitive ?
(strpos($haystack, $needle) === FALSE ? FALSE : TRUE):
(stripos($haystack, $needle) === FALSE ? FALSE : TRUE);
}
strpos
menemukan posisi kemunculan pertama dari substring peka huruf besar-kecil dalam sebuah string.stripos
menemukan posisi kemunculan pertama substring yang tidak peka huruf besar-kecil dalam sebuah string.myFunction($haystack, $needle) === FALSE ? FALSE : TRUE
memastikan bahwa myFunction
selalu mengembalikan boolean dan memperbaiki perilaku tak terduga ketika indeks substring adalah 0.$caseSensitive ? A : B
memilih salah satu strpos
atau stripos
melakukan pekerjaan, tergantung pada nilai $caseSensitive
.var_dump(contains('bare','are')); // Outputs: bool(true)
var_dump(contains('stare', 'are')); // Outputs: bool(true)
var_dump(contains('stare', 'Are')); // Outputs: bool(true)
var_dump(contains('stare', 'Are', true)); // Outputs: bool(false)
var_dump(contains('hair', 'are')); // Outputs: bool(false)
var_dump(contains('aren\'t', 'are')); // Outputs: bool(true)
var_dump(contains('Aren\'t', 'are')); // Outputs: bool(true)
var_dump(contains('Aren\'t', 'are', true)); // Outputs: bool(false)
var_dump(contains('aren\'t', 'Are')); // Outputs: bool(true)
var_dump(contains('aren\'t', 'Are', true)); // Outputs: bool(false)
var_dump(contains('broad', 'are')); // Outputs: bool(false)
var_dump(contains('border', 'are')); // Outputs: bool(false)
Fungsi di bawah ini juga berfungsi dan tidak bergantung pada fungsi lainnya; hanya menggunakan manipulasi string PHP asli. Secara pribadi, saya tidak merekomendasikan ini, tetapi Anda dapat melihat cara kerjanya:
<?php
if (!function_exists('is_str_contain')) {
function is_str_contain($string, $keyword)
{
if (empty($string) || empty($keyword)) return false;
$keyword_first_char = $keyword[0];
$keyword_length = strlen($keyword);
$string_length = strlen($string);
// case 1
if ($string_length < $keyword_length) return false;
// case 2
if ($string_length == $keyword_length) {
if ($string == $keyword) return true;
else return false;
}
// case 3
if ($keyword_length == 1) {
for ($i = 0; $i < $string_length; $i++) {
// Check if keyword's first char == string's first char
if ($keyword_first_char == $string[$i]) {
return true;
}
}
}
// case 4
if ($keyword_length > 1) {
for ($i = 0; $i < $string_length; $i++) {
/*
the remaining part of the string is equal or greater than the keyword
*/
if (($string_length + 1 - $i) >= $keyword_length) {
// Check if keyword's first char == string's first char
if ($keyword_first_char == $string[$i]) {
$match = 1;
for ($j = 1; $j < $keyword_length; $j++) {
if (($i + $j < $string_length) && $keyword[$j] == $string[$i + $j]) {
$match++;
}
else {
return false;
}
}
if ($match == $keyword_length) {
return true;
}
// end if first match found
}
// end if remaining part
}
else {
return false;
}
// end for loop
}
// end case4
}
return false;
}
}
Uji:
var_dump(is_str_contain("test", "t")); //true
var_dump(is_str_contain("test", "")); //false
var_dump(is_str_contain("test", "test")); //true
var_dump(is_str_contain("test", "testa")); //flase
var_dump(is_str_contain("a----z", "a")); //true
var_dump(is_str_contain("a----z", "z")); //true
var_dump(is_str_contain("mystringss", "strings")); //true
Anda dapat menggunakan strstr
fungsi ini:
$haystack = "I know programming";
$needle = "know";
$flag = strstr($haystack, $needle);
if ($flag){
echo "true";
}
Tanpa menggunakan fungsi bawaan:
$haystack = "hello world";
$needle = "llo";
$i = $j = 0;
while (isset($needle[$i])) {
while (isset($haystack[$j]) && ($needle[$i] != $haystack[$j])) {
$j++;
$i = 0;
}
if (!isset($haystack[$j])) {
break;
}
$i++;
$j++;
}
if (!isset($needle[$i])) {
echo "YES";
}
else{
echo "NO ";
}
Saya mengalami masalah dengan ini, dan akhirnya saya memilih untuk membuat solusi sendiri. Tanpa menggunakan mesin ekspresi reguler :
function contains($text, $word)
{
$found = false;
$spaceArray = explode(' ', $text);
$nonBreakingSpaceArray = explode(chr(160), $text);
if (in_array($word, $spaceArray) ||
in_array($word, $nonBreakingSpaceArray)
) {
$found = true;
}
return $found;
}
Anda mungkin memperhatikan bahwa solusi sebelumnya bukan jawaban untuk kata yang digunakan sebagai awalan untuk yang lain. Untuk menggunakan contoh Anda:
$a = 'How are you?';
$b = "a skirt that flares from the waist";
$c = "are";
Dengan sampel di atas, keduanya $a
dan $b
berisi $c
, tetapi Anda mungkin ingin fungsi Anda memberi tahu Anda bahwa hanya $a
berisi $c
.
$found = false
di awal
Pilihan lain untuk menemukan kemunculan kata dari string menggunakan strstr () dan stristr () adalah seperti berikut:
<?php
$a = 'How are you?';
if (strstr($a,'are')) // Case sensitive
echo 'true';
if (stristr($a,'are')) // Case insensitive
echo 'true';
?>
i
in stristr
adalah singkatan dari tidak sensitif.
Banyak jawaban yang menggunakan substr_count
pemeriksaan jika hasilnya >0
. Tetapi karena if
pernyataan tersebut menganggap nol sama dengan false , Anda dapat menghindari cek itu dan menulis langsung:
if (substr_count($a, 'are')) {
Untuk memeriksa apakah tidak ada, tambahkan !
operator:
if (!substr_count($a, 'are')) {
Ini dapat dilakukan dengan tiga cara berbeda:
$a = 'How are you?';
1- stristr ()
if (strlen(stristr($a,"are"))>0) {
echo "true"; // are Found
}
2- strpos ()
if (strpos($a, "are") !== false) {
echo "true"; // are Found
}
3- preg_match ()
if( preg_match("are",$a) === 1) {
echo "true"; // are Found
}
Versi singkat
$result = false!==strpos($a, 'are');
Untuk menemukan 'kata', daripada munculnya serangkaian huruf yang sebenarnya bisa menjadi bagian dari kata lain, berikut ini akan menjadi solusi yang baik.
$string = 'How are you?';
$array = explode(" ", $string);
if (in_array('are', $array) ) {
echo 'Found the word';
}
$string
isAre are, are?
Anda harus menggunakan format case sensitif, jadi jika nilai yang dimasukkan dalam small
atau caps
tidak masalah.
<?php
$grass = "This is pratik joshi";
$needle = "pratik";
if (stripos($grass,$needle) !== false) {
/*If i EXCLUDE : !== false then if string is found at 0th location,
still it will say STRING NOT FOUND as it will return '0' and it
will goto else and will say NOT Found though it is found at 0th location.*/
echo 'Contains word';
}else{
echo "does NOT contain word";
}
?>
Di sini stripo menemukan jarum di heystack tanpa mempertimbangkan kasing (kecil / tutup).
Mungkin Anda bisa menggunakan sesuatu seperti ini:
<?php
findWord('Test all OK');
function findWord($text) {
if (strstr($text, 'ok')) {
echo 'Found a word';
}
else
{
echo 'Did not find a word';
}
}
?>
Jangan gunakan preg_match()
jika Anda hanya ingin memeriksa apakah satu string terkandung dalam string lain. Gunakan strpos()
atau strstr()
sebagai gantinya karena mereka akan lebih cepat. ( http://in2.php.net/preg_match )
if (strpos($text, 'string_name') !== false){
echo 'get the string';
}
Jika Anda ingin memeriksa apakah string berisi beberapa kata spesifik, Anda dapat melakukan:
$badWords = array("dette", "capitale", "rembourser", "ivoire", "mandat");
$string = "a string with the word ivoire";
$matchFound = preg_match_all("/\b(" . implode($badWords,"|") . ")\b/i", $string, $matches);
if ($matchFound) {
echo "a bad word has been found";
}
else {
echo "your string is okay";
}
Ini berguna untuk menghindari spam saat mengirim email misalnya.
Fungsi strpos berfungsi dengan baik, tetapi jika Anda ingin case-insensitive
memeriksa kata dalam sebuah paragraf maka Anda dapat menggunakan stripos
fungsi PHP
.
Sebagai contoh,
$result = stripos("I love PHP, I love PHP too!", "php");
if ($result === false) {
// Word does not exist
}
else {
// Word exists
}
Temukan posisi kemunculan pertama substring yang tidak peka huruf besar-kecil dalam string.
Jika kata itu tidak ada dalam string maka itu akan mengembalikan false kalau itu akan mengembalikan posisi kata.
Anda perlu menggunakan operator yang identik / tidak identik karena strpos dapat mengembalikan 0 sebagai nilai indeksnya. Jika Anda menyukai operator ternary, pertimbangkan untuk menggunakan yang berikut (sepertinya sedikit mundur saya akui):
echo FALSE === strpos($a,'are') ? 'false': 'true';
Periksa apakah string berisi kata-kata tertentu?
Ini berarti string harus dipecahkan menjadi kata-kata (lihat catatan di bawah).
Salah satu cara untuk melakukan ini dan menentukan pemisah menggunakan preg_split
( doc ):
<?php
function contains_word($str, $word) {
// split string into words
// separators are substrings of at least one non-word character
$arr = preg_split('/\W+/', $str, NULL, PREG_SPLIT_NO_EMPTY);
// now the words can be examined each
foreach ($arr as $value) {
if ($value === $word) {
return true;
}
}
return false;
}
function test($str, $word) {
if (contains_word($str, $word)) {
echo "string '" . $str . "' contains word '" . $word . "'\n";
} else {
echo "string '" . $str . "' does not contain word '" . $word . "'\n" ;
}
}
$a = 'How are you?';
test($a, 'are');
test($a, 'ar');
test($a, 'hare');
?>
Berlari memberi
$ php -f test.php
string 'How are you?' contains word 'are'
string 'How are you?' does not contain word 'ar'
string 'How are you?' does not contain word 'hare'
Catatan: Di sini kami tidak bermaksud kata untuk setiap urutan simbol.
Definisi praktis kata adalah dalam arti mesin ekspresi reguler PCRE, di mana kata-kata adalah substring yang hanya terdiri dari karakter kata, dipisahkan oleh karakter non-kata.
Karakter "kata" adalah huruf atau digit atau karakter garis bawah, yaitu karakter apa saja yang dapat menjadi bagian dari "kata" Perl. Definisi huruf dan angka dikendalikan oleh tabel karakter PCRE, dan dapat bervariasi jika pencocokan khusus lokal terjadi (..)