我有数据,我希望将其粘贴到文本框中,它将采用E.G
的形式Ryu Aiter D78:21:87:13 177 /177 1 / 6
Ryu Chronos D78:21:26:21 182 /182 0 / 6
Ryu Hermes D78:21:26:22 201 /201 0 / 6
Ryu Hefaistos D78:31:75:10 136 /136 1 / 2
Ryu Krotos D78:84:96:11 170 /170 1 / 6
Ryu Heros D78:65:51:31 175 /175 2 / 5
Ryu Arachnos D78:13:84:11 185 /185 0 / 5
它像这样分裂了
基地(最多16个字符)我想做的是为每一行文字创建一个循环, 然后在该循环内部将行的每个部分切成每个组件的变量。
就分离它的想法我知道:符号被禁止使用名称和基础。 所以,如果我找到第一个“:”然后退回2并接下来的12个字符,这是我的位置 我知道可以用until循环和if(string [x] =':')
来完成但是我如何循环遍历行? 我怎么能连续分开剩下的数据呢?
答案 0 :(得分:1)
这是正则表达式的用法:P试试这个:
$lines = explode( "\r\n", $data );
$users = array();
foreach( $lines as $line )
{
$matches = array();
$user = array();
preg_match( "/([^ ]+) ([^ ]+) ((?:[A-Z])(?:[0-9]+:){3}[0-9]+) ([0-9]+) \/([0-9]+) ([0-9]+) \/ ([0-9]+)/", $line, $matches );
list(,$user['name'],$user['base'],$user['location'],$user['econ'],$user['maxecon'],$user['used'],$user['total']) = $matches;
$users[] = $user;
}
您将拥有一个名为users的数组,其中包含一系列包含组件的关联数组。如下......
Array
(
[0] => Array
(
[total] => 6
[used] => 1
[maxecon] => 177
[econ] => 177
[location] => D78:21:87:13
[base] => Aiter
[name] => Ryu
)
[1] => Array
(
[total] => 6
[used] => 0
[maxecon] => 182
[econ] => 182
[location] => D78:21:26:21
[base] => Chronos
[name] => Ryu
)
etc, etc...
编辑:我对数据做了很多假设,因为你没有提供很多细节,如果你需要进一步的帮助,请告诉我。
根据您的意见更新:
Line 182: $name = htmlspecialchars(mysql_real_escape_string($_POST['name']));
Line 188: $tecon = htmlspecialchars(mysql_real_escape_string($user['econ']));
你应该打开display_errors,因为它们是可以轻松调试的简单语法错误。
答案 1 :(得分:0)
您可以使用explode并逐步将其分解吗?
例如。
答案 2 :(得分:0)
if(preg_match_all('/^([a-z]{1,16})\s+([a-z]{1,16})\s+(D\d+):(\d+):(\d+):(\d+)\s+(\d+)\s+\/(\d+)\s+(\d+)\s+\/\s+(\d+)$/mi', $yourinputgoeshere, $match) {
print_r($match);
}
这应该是未经测试的,将所有内容都分成大数组。未经测试
答案 3 :(得分:0)
扩展同样的想法我试图在另一页上使用preg匹配单行。
我使用代码
$data = $_POST['list'];
$matches = array();
$user = array();
preg_match( "/(.+?) ((?:[A-Z])(?:[0-9]+:){3}[0-9]+) ([0-9]+) \/([0-9]+) ([0-9]+) \/ ([0-9]+)/", $data, $matches );
list(,$user['base'],$user['location'],$user['econ'],$user['maxecon'],$user['used'],$user['total']) = $matches;
$base = $users['base'];
$location = $users['location'];
$tecon = $users['econ'];
我使用echo打印出£数据并且它包含了预期的数据但没有行循环的相同代码没有将我的数据部分分离到数组中..实际上$ user的数组大小仍为空, wroung已经发生了什么?