我正在试图弄清楚如何只读取数据库所需的几行代码,这些行来自一封前夜的“杀死”邮件:
2011.12.30 23:26
受害者:安娜贝尔·色斯特
公司:影子Monolith
联盟: xXDEATHXx的影子
派系:无
被毁:猎豹
系统: C6CG-W
安保: 0.0
遭受的损害: 827个当事方:
姓名: Milena Dush
安保: 0.6
公司: nXo
联盟:无畏的跨越
派系:无
船:猎犬
武器:卡尔达里海军贝恩鱼雷
造成的损坏: 457件被毁物品:
姐妹扩展探针发射器
催化冷气喷射器
纳米纤维内部结构Ⅱ
过驱喷油器系统II
硬布线-基因核心增强CA-2 (货物)
纳米工程(货物)
姐妹核心扫描仪探测器,数量:5(货物)
微型辅助电源核心I(货物)
姐妹深空扫描仪探测器,数量:5(货物)扔下的物品:
隐蔽行动-隐身装置II
姐妹战斗扫描器探测仪,数量:5
经纱消毒器II
纳米纤维内部结构Ⅱ
天体测量精确定位(货物)
小型重力电容器升级I,Qty: 2(货物)
一级打捞工(货物)
拦截器(货物)
热力学(货物)
联合处理器I(货运)
当用户在多个文本框中输入杀伤邮件时,我只需要读取已销毁的项目和丢弃的项目,并将数量包含在单独的字符串中。
有办法吗?
发布于 2011-12-31 00:16:28
你可以使用爆炸(分隔符,文本)分裂成两个文本和数组。例如:$str=explode(":","YourText");
发布于 2011-12-31 00:06:06
<?php
$str = " 2011.12.30 23:26
Victim: Annabel Lust
Corp: Shadow Monolith
Alliance: Shadow of xXDEATHXx
Faction: None
Destroyed: Cheetah
System: C6CG-W
Security: 0.0
Damage Taken: 827
Involved parties:
Name: Milena Dush
Security: 0.6
Corp: nXo
Alliance: Intrepid Crossing
Faction: None
Ship: Hound
Weapon: Caldari Navy Bane Torpedo
Damage Done: 457
Destroyed items:
Sisters Expanded Probe Launcher
Catalyzed Cold-Gas Arcjet Thrusters
Nanofiber Internal Structure II
Overdrive Injector System II
Hardwiring - Genolution Core Augmentation CA-2 (Cargo)
Nanite Engineering (Cargo)
Sisters Core Scanner Probe, Qty: 5 (Cargo)
Micro Auxiliary Power Core I (Cargo)
Sisters Deep Space Scanner Probe, Qty: 5 (Cargo)
Dropped items:
Covert Ops Cloaking Device II
Sisters Combat Scanner Probe, Qty: 5
Warp Disruptor II
Nanofiber Internal Structure II
Astrometric Pinpointing (Cargo)
Small Gravity Capacitor Upgrade I, Qty: 2 (Cargo)
Salvager I (Cargo)
Interceptors (Cargo)
Thermodynamics (Cargo)
Co-Processor I (Cargo)
";
var_dump(parseItems('/Destroyed items:(?P<destroyedItems>.*)Dropped items:/is', $str, 1));
var_dump(parseItems('/Dropped items:(?P<droppedItems>.*)/is', $str, 1));
function parseItems($regex, $str, $defaultQty = 0){
preg_match($regex, $str, $match);
$lines = explode("\n", $match[1]);
$defaultQty = 0;
$items = array();
foreach($lines as $key => $line){
$line = trim($line);
if($line != ""){
$quantity = (strpos($line, "Qty:") != false) ? getQty($line) : $defaultQty;
$items[] = array($line => $quantity);
}
}
return $items;
}
function getQty($line){
preg_match('/, Qty:\s+(?P<quantity>[0-9]+)/', $line, $match);
return $match['quantity'];
}这应该会给你一系列的掉落和摧毁线,以及它的数量。它返回关联数组,其中键是行,值是数量。
https://stackoverflow.com/questions/8685232
复制相似问题