سؤال

لدي نص حيث يقوم المستخدم بنسخ الرسالة بأكملها:

Time(UTC): 2010-02-27T21:58:20.74Z

Filesize  : 9549920 bytes

IP Address: 192.168.1.100

IP Port: 59807

باستخدام PHP ، كيف يمكنني أتمتة هذا وأحلل هذا إلى 4 متغيرات منفصلة ، مثل ذلك:

<?php
$time = 2010-02-27T21:58:20.74Z;
$filesize = 9549920;
$ip = 192.168.1.100;
$port = 59807;

أستطيع أن أقول أن كل سطر لديه قولون ، لذلك أعتقد أن هذا قد يكون له علاقة به. لست متأكدًا مما إذا كنت بحاجة إلى استخدام Substr أو شيء من هذا القبيل. لكنني لست متأكدًا تمامًا من أين أبدأ بهذا؟

أي مساعدة ستكون رائعة! شكرًا.

هل كانت مفيدة؟

المحلول

اتجاه واحد

$textarea=<<<EOF
Time(UTC): 2010-02-27T21:58:20.74Z

Filesize  : 9549920 bytes

IP Address: 192.168.1.100

IP Port: 59807
EOF;

$s = explode("\n\n",$textarea);
foreach ($s as $k=>$v){
  list($a,$b) = array_map(trim,explode(": ",$v));
  # or use explode(":",$v,2) as jason suggested.
  $array[$a]=$b;
}
print_r($array);

نصائح أخرى

هل من الممكن أن يكون كل منها على خطه الخاص وبالنسبة لهذا الترتيب؟ ثم قد تكون قادرًا على ذلك explode السلسلة بأكملها \n وثم explode كل سطر على :. هذا نهج سريع وقذرة. علاوة على ذلك ، يجب أن تمر عبر الخط عبر الخط وإلقاء نظرة على بداية السطر سواء كان النص قبل القولون الأول يتطابق مع المتغير المطلوب ، وإذا كان الأمر كذلك ، قم بتحليله وفقًا لقواعد التحليل المحددة مسبقًا (على سبيل المثال Drop 'Bytes' من قيمة الملفات ).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top