وظيفة sscanf() في PHP

مثال

فكك النص:

<?php
$str = "age:30 weight:60kg";
sscanf($str,"age:%d weight:%dkg",$age,$weight);
// عرض النوع والقيمة
var_dump($age,$weight);
؟

运行实例

التعريف والاستخدام

تقوم وظيفة sscanf() بفكك النص من النص المحدد. تقوم وظيفة sscanf() بفكك النص بناءً على سلسلة النحو.

إذا تم إرسال إثنين فقط من المعلمات إلى هذه الوظيفة، فإن البيانات ستتمكن في شكل مصفوفة. وإذا تم إرسال معلمات إضافية، فإن البيانات المفككة ستتمكن في هذه المعلمات. وإذا كان عدد المعلمات أكبر من عدد المعلمات التي تحتويها، فإن هناك خطأ. ولكن إذا كان عدد المعلمات أقل من عدد المعلمات التي تحتويها، فإن المعلمات الإضافية تحتوي على NULL.

الوظائف ذات الصلة:

  • printf() - يخرج سلسلة نصية مformatted
  • sprintf() - يكتب سلسلة نصية مformatted في متغير

النحو

sscanf(نص,تنسيق,arg1,arg2,arg++)
الم 参数 الوصف
نص مطلوب. يحدد النص الذي سيتم قراءته.
تنسيق

مطلوب. يحدد التنسيق الذي سيتم استخدامه.

قيم التنسيق الممكنة:

  • %% - يعود بنسبة %
  • %c - الحرف الم对应 للقيمة ASCII
  • %d - الرقم العشري يحتوي على إشارة (+ أو -) (رقم سالب، 0، رقم إيجابي)
  • %e - استخدام النظام العشري الصغير (مثل 1.2e+2)
  • 誀لرقم العشري بدون إشارة (+ أو -) (أكبر أو يساوي 0)
  • %f - الرقم العشري المثلثي
  • %o - الرقم الثماني
  • %s - النص
  • %x - الرقم العشري (حروف صغيرة)
  • %X - 十六进制数(大写字母)

附加的格式值。必需放置在 % 和字母之间(例如 %.2f):

  • + (在数字前面加上 + 或 - 来定义数字的正负性。默认地,只有负数做标记,正数不做标记)
  • ' (规定使用什么作为填充,默认是空格。它必须与宽度指定器一起使用。)
  • - (左调整变量值)
  • .[0-9] (规定变量值的最小宽度)
  • .[0-9] (规定小数位数或最大字符串长度)

注释:如果使用多个上述的格式值,它们必须按照上面的顺序使用。

arg1 可选。存储数据的第一个变量。
arg2 可选。存储数据的第二个变量。
arg++ 可选。存储数据的第三、四个变量,依此类推。

技术细节

返回值: 如果只向该函数传递两个参数,数据将以数组的形式返回。否则,如果传递了额外的参数,那么被解析的数据会存储在这些参数中。如果区分符的数目大于包含它们的变量的数目,则会发生错误。不过,如果区分符的数目小于包含它们的变量的数目,则额外的变量包含 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);
؟

运行实例