Forum und email

strtok

(PHP 4, PHP 5)

strtok — Χωρίστε το string σε tokens

Περιγραφή

string strtok ( string $arg1 , string $arg2 )

Η συνάρτηση strtok() χωρίζει ένα string (arg1 ) σε μικρότερα (tokens), με το κάθε ένα να οριοθετείται από τους χαρακτήρες της παραμέτρου arg2 . Έτσι, εάν έχετε το string "This is an example string" μπορείτε να το χωρίσετε σε tokens, που το κάθε ένα να αντιστοιχεί σε μία λέξη με το να χρησιμοποιήσετε ως token ένα κενό.

Example#1 Παράδειγμα χρήσης της strtok()

<?php
$string 
"This is\tan example\nstring";
/* Use tab and newline as tokenizing characters as well  */
$tok strtok($string," \n\t");
while (
$tok) {
    echo 
"Word=$tok<br>";
    
$tok strtok(" \n\t");
}
?>

Παρατηρείστε ότι μόνο η πρώτη κλήση της strtok χρησιμοποιεί το όρισμα string. Κάθε επόμενη κλήση της συνάρτησης χρειάζεται μόνο το token που θα χρησιμοποιήσει, αφού εντοπίζει τη θέση του στο τρέχων string. Για να ξαναξεκινήσετε, ή για να κάνετε tokenize ένα νέο string μπορείτε απλά να καλέσετε τη strtok και πάλι με το όρισμα string για να ξεκινήσετε. Μπορείτε, επίσης, να χρησιμοποιείσετε πολλαπλά tokens στην παράμετρο token. Το string θα χωρίζεται σε tokens κάθε φορά που συναντάται κάποιος από αυτούς τους χαρακτήρες.

Η συμπεριφορά της συνάρτησης στην εύρεση ενός κενού τμήματος άλλαξε με την PHP 4.1.0. Σε παλιότερες εκδόσεις θα υπήρχε ως έξοδος ένα κενό string, ενώ η νέα σωστή συμπεριφορά προσπερνάει απλά αυτό το μέρος του string:

Example#2 Παλιά συμπεριφορά της strtok()

<?php
$first_token  
strtok('/something''/');
$second_token strtok('/');
var_dump ($first_token$second_token);

/* Output:
    string(0) ""
    string(9) "something"
*/    
?>

Example#3 Νέος τρόπος λειτουργίας της strtok()

<?php
$first_token  
strtok('/something''/');
$second_token strtok('/');
var_dump ($first_token$second_token);

/* Output:
    string(9) "something"
    bool(false)
*/    
?>

Προσέχετε, επίσης, να μην είναι τα tokens σας ίσα με το "0". Η περίπτωση αυτή μεταφράζεται σε τιμή FALSE.

Ανατρέξετε επίσης στις: split() και explode().