2016-06-29 7 views
0

Я ищу наиболее эффективный и чистый способ извлечения данных из строки и организации ее в виде массива информации. Я создаю инструмент, который преобразует вставную записную информацию в более читаемый формат.Лучший способ извлечения данных из строки

На данный момент мы получаем заметки для новых сотрудников, как это:

ИМЯ: JOHN SMITH

СЕРВИС: ICT

МЕНЕДЖЕР: JOHN ТЕРНЕР

ДОЛЖНОСТЬ: ИТ-поддержка Должностное лицо

Я хочу, чтобы иметь возможность поместить всю эту информацию в массив извлекаться из POST TEXTAREA, а затем отобразить его на странице в удобном формате, как показано ниже:

Полное имя: John Smith

Зона обслуживания : ИКТ

Line менеджер: Джон Тернер

Название работы: IT Support Officer

Я знаю, тха t Я мог бы использовать такие функции, как explode(), но я просто хотел посмотреть, есть ли какие-нибудь лучшие способы сделать это?

Я хочу хранить всю информацию в массиве, чтобы она была легко ECHO на моей веб-странице после ее публикации на сервере.

$Newemployee['Name'] = "John Smith"; 
$Newemployee['Service'] = "ICT"; 
$Newemployee['Manager'] = "John Turner"; 
$Newemployee['Post_title'] = "IT Support Officer"; 

Если у кого-то есть предложения, которые были бы замечательными.

+0

Нет, нет лучшего способа. Поделитесь с нами тем, что вы делаете, и мы сможем помочь вам с некоторыми улучшениями. –

+0

, вам лучше вводить эти данные в текстовые поля, а не всю информацию в текстовой области с самого начала, чтобы упростить обработку позже. – Matt

+0

Поскольку вы знаете, что вы можете использовать 'explode()' для этого, можете ли вы показать нам, что вы пробовали до сих пор? –

ответ

0

Предполагая, что вы не имеете никакого контроля над форматом ввода, и без дезинфицирующего вход в любом случае, я считаю, что наиболее подходящим способом для достижения этой цели является использование функции, как взорваться() как вы описали:

$newuser = []; 

$input = "NAME: JOHN SMITH 

SERVICE: ICT 

MANAGER: JOHN TURNER 

POST TITLE: IT Support Officer"; 

$lines = array_filter(explode("\n", $input)); 

foreach ($lines as $line) { 

    $parts = explode(": ", $line); 
    $newuser[ucfirst(strtolower(str_replace(" ", "_", $parts[0])))] = $parts[1]; 

} 

EDIT

изменили индексы массива, чтобы отразить форматирование вы описали.

Что касается фактических значений, вы обычно лучше сохраняете все значения в одной и той же форме (то есть в нижнем регистре) и форматируете их соответственно при печати на экране. Это позволяет легко сравнивать значения без необходимости знать формат каждой строки - это означает, что вы можете обнаруживать такие вещи, как акроним «ИКТ», и иметь ли он все прописные буквы, тогда как другая «Служба» не может быть аббревиатурой, и поэтому вы должны предпочитайте его просто заглавными.

+0

Вы уверены? У меня есть PHPFiddle с выходом: 'Array ([NAME] => JOHN SMITH [SERVICE] => ICT [MANAGER] => JOHN TURNER [POST TITLE] => сотрудник по поддержке ИТ)' –

+0

Вопрос задает вопрос «лучший способ извлечь данные из строки »- я ответил, что с подходящим решением. Как вы тогда манипулируете данными (например, заглавными буквами), это другой вопрос –

Смежные вопросы