2015-03-07 7 views
-2

людиПрочтите файл и выберите конкретные строки, как

У меня есть проблема, которую я хочу прочитать из файла, и использовать и извлекать некоторые части файла, как показано ниже. Это то, что находится внутри файла, но я хочу получить имена. Этот файл используется моим сервером, и если игрок регистрируется на сервере, список имен увеличивается. Но я не знаю, как это сделать .. и я действительно хочу знать, как это сделать.

Я уже пробовал вещи сам, взорвав первых персонажей, но это то, как далеко доходит мое знание.

Уже большое спасибо за то, что так любезно помогли мне.

Players online: NAME1, NAME2, NAME3, NAME4, NAME5, NAME6, ETC, ETC. Total: 4 
+0

ли вы пытались что-то? –

+0

Да, взорвав игроков онлайн и т. Д., Но у меня нет подсказки о том, как использовать все, что есть между Игроками онлайн: и. всего: 4 – Jeffry

+0

вы можете разместить свой код PHP –

ответ

0

Вы можете попробовать это:

$line = 'layers online: NAME1, NAME2, NAME3, NAME4, NAME5, NAME6, ETC, ETC. Total: 4'; 
$pattern = '/:(.*)[,.]/'; 

preg_match($pattern, $line, $matches); 
$names = explode(',', $matches[1]); 

print_r($names); 
+0

Нет проблем вообще ^^ –

0
$s = 'Players online: Admin Wouter, Krachtpatser, Dark Warrior, Anneleen. Total: 4'; 
// or read from the players file: 
//$s = file_get_contents('path_to_players_file'); 

$s = str_replace('Players online: ', '', $s); 
$stringPlayers = substr($s, 0, strrpos($s, '. Total:')); 

echo $stringPlayers; // displays: Admin Wouter, Krachtpatser, Dark Warrior, Anneleen 

// now get the player names in an array: 

$arrayPlayers = explode(',', $stringPlayers); 
foreach ($arrayPlayers as $k => $name) { 
    $arrayPlayers[$k] = trim($name); 
} 

echo '<pre>'; 
print_r($arrayPlayers); 
echo '</pre>'; 

/* Displays: 
    Array 
    (
     [0] => Admin Wouter 
     [1] => Krachtpatser 
     [2] => Dark Warrior 
     [3] => Anneleen 
    ) 
*/ 
0

Вы можете найти первое вхождение в : характере и положение Total: с помощью strpos(), а затем использовать substr(), чтобы удалить эти ненужные части из строки. Затем вы можете разбить строку на каждый символ ,, чтобы получить массив имен. Обратите внимание на то, что имена будут содержать пробелы, чтобы мы могли использовать array_walk() в сочетании с trim(), чтобы удалить эти:

// get the contents of your file 
$data = file_get_contents('file.txt'); 
// get position of first ':' character 
$pos1 = strpos($data, ':'); 
// get position of 'Total:' 
$pos2 = strrpos($data, 'Total:'); 
// remove these parts using `substr()` 
$data = substr($data, $pos1+1, ($pos2 - 1) - $pos1); 
// split the string on each ',' character 
$array = explode(",", $data); 
// remove any whitespaces from the start and end 
array_walk($array, function(&$value, $key) { 
    $value = trim($value); 
}); 
// array now contains 
Array 
(
    [0] => Admin Wouter 
    [1] => Krachtpatser 
    [2] => Dark Warrior 
    [3] => Anneleen. 
) 

Чтобы убедиться, что у вас нет никакого символа «» после того, как имя можно изменить array_walk() обратного вызова, как это:

array_walk($array, function(&$value, $key) { 
    // trim whitespaces 
    $value = trim($value); 
    // trim trailing '.' characters 
    $value = rtrim($value, '.'); 
}); 
Смежные вопросы