У меня есть текстовый файл, который выглядит так:

Disable: 0
Lock: 0
Default: Value
ThisIsAnOption: foo
HereIsAnAnother: bar
AndAgain: foobar

И это в счет большего ...

Итак, теперь я делаю это, чтобы поместить содержимое в массив:

$file = './somefile.txt';
$array = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

С этим результатом:

Array ( [0] => Disable: 0 [1] => Lock: 0 [2] => Default: Value [3] => ThisIsAnOption: foo [4] => HereIsAnAnother: bar [5] => AndAgain: foobar ) 

Я хочу сохранить в массиве такие значения, как нули, «Value», «foo», «bar» и «foobar». Поэтому мне нужно удалить (с пробелом) «Отключить:», «Заблокировать:», «...»

РЕДАКТИРОВАТЬ: вот массив, который мне нужен в конце .

Array ( [0] => 0 [1] => 0 [2] => Value [3] => foo [4] => bar [5] => foobar ) 

Как лучше всего это сделать? Заранее спасибо за вашу помощь!

0
MKody 29 Авг 2014 в 13:43

4 ответа

Лучший ответ

Используйте substr() + strpos():

<?php
// header('Content-Type: text/plain; charset=utf-8');

$array = [
    'Disable: 0',
    'Lock: 0',
    'Default: Value',
    'ThisIsAnOption: foo',
    'HereIsAnAnother: bar',
    'AndAgain: foobar'
];

foreach($array as &$value){
    $value = substr($value, strpos($value, ':') + 2);
}

print_r($array);
?>

Результат:

Array
(
    [0] => 0
    [1] => 0
    [2] => Value
    [3] => foo
    [4] => bar
    [5] => foobar
)
0
BlitZ 29 Авг 2014 в 09:49

Попробуй это

 <?php
$array = [
    'Disable: 0',
    'Lock: 0',
    'Default: Value',
    'ThisIsAnOption: foo',
    'HereIsAnAnother: bar',
    'AndAgain: foobar'
];

$arr_output = array(); 
foreach($array as $val)
{
   $arr_temp = explode(":", $val);
   if(isset($arr_temp[1]))
   {
       $arr_output[] = trim($arr_temp[1]);
   }
}
echo implode(",", $arr_output);
?>

ВЫХОД:

0,0,Value,foo,bar,foobar

ДЕМО

0
Satish Sharma 29 Авг 2014 в 09:57

Попробуй это:

for($i = 0; $i < count($array); $i++)
{
    $temp = explode(': ', $array[$i]);
    $array[$i] = $temp[1];
}

Это должно в основном разделить строки, где есть:, за которым следует пробел, таким образом удаляя также пробел.

0
Andrea 29 Авг 2014 в 09:57

Я добавил массив $ для этого тестового примера. Вы будете использовать свой массив, который был прочитан из файла.

$array = Array (
    0 => "Disable: 0",
    1 => "Lock: 0",
    2 => "Default: Value",
    3 => "ThisIsAnOption: foo",
    4 => "HereIsAnAnother: bar",
    5 => "AndAgain: foobar"
) ;
$newArray = array();

foreach ($array as $line) {
    if (strpos($line, ":")) {
        $lineArray = explode(":", $line);
        $newArray[trim($lineArray[0])] = trim($lineArray[1]);
    }
}

Это дает такой результат:

    Disable 0
    Lock    0
    Default Value
    ThisIsAnOption  foo
    HereIsAnAnother bar
    AndAgain    foobar
    $newArray

К сожалению, впоследствии вы изменили требования.

0
Franz Holzinger 29 Авг 2014 в 10:13