Συνάρτηση sscanf() PHP

Παράδειγμα

Ανάλυση συμβολοσειράς:

<?php
$str = "age:30 weight:60kg";
sscanf($str,"age:%d weight:%dkg",$age,$weight);
// Εμφάνιση τύπου και τιμής
var_dump($age,$weight);
?>

Εκτέλεση Παραδείγματος

Ορισμός και χρήση

Η συνάρτηση sscanf() αναλύει την είσοδο από τη συμβολοσειρά ανάλογα με το καθορισμένο μοτίβο. Η συνάρτηση sscanf() αναλύει τη συμβολοσειρά ανάλογα με τη μορφοποιητική συμβολοσειρά.

Αν αποσταλεί μόνο δύο παραμέτρους στο πρόγραμμα, τα δεδομένα θα επιστρέψουν σε μορφή μαζικού. Αν αποσταλεί επιπλέον παραμέτρους, τα δεδομένα που θα αναλύονται θα αποθηκευτούν στις παραμέτρους αυτές. Αν ο αριθμός των διαχωριστών είναι μεγαλύτερος από τον αριθμό των μεταβλητών που περιέχουν, θα προκύψει σφάλμα. Ωστόσο, αν ο αριθμός των διαχωριστών είναι μικρότερος από τον αριθμό των μεταβλητών, οι επιπλέον μεταβλητές θα περιέχουν NULL.

Συμπαράμετροι:

  • printf() - Εκτύπωση μορφοποιημένης συμβολοσειράς
  • sprintf() - Εγγραφή μιας μορφοποιημένης συμβολοσειράς σε μεταβλητή

Γλώσσα

sscanf(συμβολοσειρά,μορφοποίηση,arg1,arg2,arg++)
Παράμετρος Περιγραφή
συμβολοσειρά Απαιτείται. Ορίζει τη συμβολοσειρά που θα διαβαστεί.
μορφοποίηση

Απαιτείται. Ορίζει τη μορφοποίηση που θα χρησιμοποιηθεί.

Πιθανές τιμές μορφοποίησης:

  • %% - επιστροφή ενός τοποθέτη (%)
  • %c - χαρακτήρας που αντιστοιχεί στο ASCII
  • %d - δεκαδικός αριθμός με πρόσημο (αρνητικός, 0, θετικός)
  • %e - επιστημονική καταγραφή με μικρά γράμματα (π.χ. 1.2e+2)
  • 蠍εκαδικός αριθμός χωρίς πρόσημο (μεγαλύτερος ή ίσος με 0)
  • %f - πλούσια αριθμητική
  • %o - οκταδικό αριθμό
  • %s - αλφαριθμητική αλληλουχία
  • %x - δισεκατομμυριαδικό αριθμό (μικρά γράμματα)
  • %X - Δεκαεξαδικό αριθμός (με μεγάλες γραμμάτιες)

Προσθέσεις μορφοποιητικών τιμών. Είναι απαραίτητο να τοποθετηθούν μεταξύ % και γραμμάτων (π.χ. %.2f)

  • + (Προσθέτει + ή - μπροστά από το αριθμό για να ορίσει τη θετικότητα ή την αρνητικότητα του αριθμού. Προεπιλεγμένα, μόνο οι αρνητικοί αριθμοί σημειώνονται, οι θετικοί δεν σημειώνονται)
  • ' (Ορίζει τι θα χρησιμοποιηθεί ως συμπληρωματικό, προεπιλεγμένο είναι το κενό. Μust χρησιμοποιηθεί με το πλάτος)
  • - (Αριστερή ρύθμιση της μεταβλητής)
  • .[0-9] (Ορίζει τη μέγιστη πλάτος της μεταβλητής)
  • .[0-9] (Ορίζει τον αριθμό των δεcimal places ή τη μέγιστη μήκος της αλφαριθμητικής αλυσίδας)

Σχόλια:Αν χρησιμοποιήσετε πολλαπλές από τις παραπάνω μορφοποιητικές τιμές, πρέπει να χρησιμοποιηθούν σε αυτή τη σειρά.

arg1 Optional. Αποθήκευση δεδομένων στη πρώτη μεταβλητή.
arg2 Optional. Αποθήκευση δεδομένων στη δεύτερη μεταβλητή.
arg++ Οptional. Αποθήκευση δεδομένων στις τρίτη και τέταρτη μεταβλητές, και ούτω καθεξής.

Τεχνικά Στοιχεία

Αποτελέσματα: Αν περάσετε δύο παραμέτρους μόνο σε αυτή τη συνάρτηση, τα δεδομένα θα επιστρέψουν σε μορφή πίνακα. Αν περάσετε επιπλέον παραμέτρους, τα δεδομένα που θα αναλύονται θα αποθηκευτούν σε αυτές τις παραμέτρους. Αν ο αριθμός των διαχωριστικών είναι μεγαλύτερος από τον αριθμό των μεταβλητών που περιέχουν, θα προκύψει σφάλμα. Ωστόσο, αν ο αριθμός των διαχωριστικών είναι μικρότερος από τον αριθμό των μεταβλητών που περιέχουν, οι επιπλέον μεταβλητές θα περιέχουν NULL.
Έκδοση PHP: 4.0.1+

Περισσότερα Παραδείγματα

Παράδειγμα 1

Χρήση μορφοποιητικών τιμών %s, %d και %c:

<?php
$str = "If you divide 4 by 2 you'll get 2";
$format = sscanf($str,"%s %s %s %d %s %d %s %s %c");
print_r($format);
?>

Εκτέλεση Παραδείγματος