الدالة sscanf()‎ في PHP

من موسوعة حسوب
< PHP

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

تُحوّل الدالة sscanf()‎ المُدْخَلَ من سلسلة نصية إلى الصيغة المطلوبة.

الوصف

mixed sscanf ( string $str , string $format [, mixed &$... ] )

وظيفة الدالة sscanf()‎ هي نظير الإدخال في الدالة printf()‎. تقرأ الدالة sscanf()‎ السلسلة النصية من المعامل str وتفسرها وفقًا للتنسيق المحدد للمعامل format، الموضح في توثيق الدالة sprintf()‎.

أي مسافات بيضاء (white space) في سلسلة التنسيق يمكن أن تتطابق مع أي مسافة بيضاء في السلسلة المدخَلة، فهذا يعني أنه حتى مسافة الجدولة ‎\t في سلسلة التنسيق يمكن أن تتطابق مع محرف مسافة واحدة في السلسلة المدخَلة.

المعاملات

str

السلسلة النصية المدخلة التي ستُفسَّر.

format

التنسيق المفسر للمعامل str والموضح في توثيق الدالة sprintf()‎ مع الاختلافات التالية:

  • هذه الدالة لا تأخذ المحليّة (locale) الحالية بالحسبان.
  • هذه الأحرف غير مُدْعَمة F و g و G و b.
  • يشير الحرف D إلى العدد العشري.
  • يرمز الحرف i إلى العدد الصحيح (integer) مع التعرّف التلقائي على أساس العدد.
  • n تعني عدد الأحرف التي عولجت حتى الآن.
  • s توقف القراءة عند أي مسافة بيضاء.

...

يمكنك اختياريًا تمرير المتغيرات بالمرجعية (by reference) التي ستحتوي على القيم التي ستُفسَّر.

القيم المعادة

إذا مُرِّرَ معاملين فقط إلى هذه الدالة، فستُعاد القيم المُفسَّرة كمصفوفة. بخلاف ذلك، إذا مُرِّرتْ المعاملات الاختيارية، فستعيد الدالة عددَ القيم المخرجة. يجب تمرير المعاملات الاختيارية بالمرجعية (reference).

إذا كانت السلاسل النصية الفرعية المتوقعة أكثر من تلك المتاحة داخل المعامل str، فستُعاد القيمة ‎-1.

أمثلة

المثال 1: مثال على الدالة sscanf()‎

<?php
// الحصول على الرقم التسلسلي
list($serial) = sscanf("SN/2350001", "SN/%d");
// وتاريخ التصنيع
$mandate = "January 01 2000";
list($month, $day, $year) = sscanf($mandate, "%s %d %d");
echo "Item $serial was manufactured on: $year-" . substr($month, 0, 3) . "-$day\n";
?>

إذا مُرِّرت معاملات اختيارية ، فستعيد الدالة عدد القيم التي جرى إسنادها إلى متغيرات. المثال 2: مثال على الدالة sscanf()‎ باستخدام المعاملات الاختيارية

<?php
//  الحصول على معلومات المؤلف وتوليد مدخلة DocBook
$auth = "24\tLewis Carroll";
$n = sscanf($auth, "%d\t%s %s", $id, $first, $last);
echo "<author id='$id'>
   <firstname>$first</firstname>
   <surname>$last</surname>
</author>\n";
?>

انظر أيضًا

  • الدالة fscanf()‎: تحويل المُدْخَلَ من ملف حسب الصيغة المطلوبة.
  • الدالةُ printf()‎: إنتاج سلسلة نصيّة مُنسَّقة.
  • الدالةُ sprintf()‎: إعادة سلسلة نصيّة مُنسَّقة.

مصادر