سؤال
لدي نص حيث يقوم المستخدم بنسخ الرسالة بأكملها:
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' من قيمة الملفات ).