Как вы извлекаете конкретную информацию из строки в PHP? - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть список элементов в этом формате:

05/01 - немного базового: текст здесь (Альфа, Браво, Чарли)

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

Я хочу иметь возможность извлечь $ месяц день $ заголовок $ (включаялюбые двоеточия) и $ keyword1 $ keyword2 $ keyword3, если они там есть.Затем назначьте их всем отдельным переменным, подобным тем, которые я создал, чтобы я мог добавить их в свою базу данных.Выполнение одного из них за один раз было бы хорошим началом, но в конечном итоге я хочу иметь возможность вставлять несколько элементов в этом формате (без пробелов или символов, чтобы отметить разницу, кроме того, что уже есть) и иметь возможность группироватьизвлечь их.

Я пытался использовать Preg_Match_all и такие вещи, как stristr (), но у меня возникли трудности.Я не очень понимаю, как их использовать, чтобы получить конкретные детали.Например,

$month = stristr($listItem, '/', true);

echo"$month<br />";

$preDay = stristr($listItem, 'The', true);
echo"$preDay<br />";

$day = stristr($preDay, '/', false);
echo"$day<br />";

Это только выводит это:

05

05/01 –

/01 – 

^ Я не могу иметь / или какой-то странный -.

Фактический код иобъяснение, как это сделать, было бы здорово!Если вы используете pregmatch, я был бы очень признателен за то, как ваша фильтрация это.Большое спасибо.

1 Ответ

1 голос
/ 03 февраля 2012

Самый простой способ - использовать explode (). Функция explode () обеспечивает быстрый способ разбивать строки на массивы. См. Руководство: http://php.net/manual/pt_BR/function.explode.php

С этим форматом строки вы можете разбить его на массив следующим образом.

$string = '05/01 - Some Basic: Text Here (Alpha, Bravo, Charli)';
$array = explode('-',$string);
$date = $array[0]; //Date 05/01

$array= explode('(',$array[1]);
$title = $array[0];
$tags = $array[1];

//Now you have
$date = '05/01';
$title = 'Some Basic: Text Here';
$tags = 'Alpha, Bravo, Charli)';

//Notice that the first parenthesis of tags was exploded.
//This is valid if and only if you have your string in the format
// [date] - [title] ([tags]

Я не знаю, является ли это лучшим способом, но это работает. Вы также можете попробовать использовать функцию preg_split (). Эта функция выполняет разбиение с использованием регулярных выражений. Если вам нужна помощь по регулярным выражениям, см. http://www.phpf1.com/tutorial/php-regular-expression.html

РЕДАКТИРОВАТЬ 1 Я заметил, что ваша строка содержит этот символ "-" после даты. Это не дефис, как я знаю. Я использую сигнал минус, чтобы написать его на клавиатуре.

Твой символ / мой = –- Они немного разные.

...