2012-02-03 1 views
0

У меня есть список элементов, которые находятся в этом формате:Как извлечь конкретную информацию из строки в PHP?

05/01 - некоторые основные: Текст Здесь (Альфа, Браво, Charli)

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

Я хочу, чтобы они могли извлечь $ month $ day $ title (включая любые двоеточия) и ключевое слово $ 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 – 

^I не может иметь/или любой странный â € «.

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

ответ

1

Самый простой способ - использовать 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

EDIT 1 Я заметил, что строка содержит этот символ «-» после даты. Это не дефис, как я его знаю. Я использую минус-сигнал, чтобы записать его на клавиатуре.

Ваш simbol/mine = - Они немного разные.

+1

Благодарим вас за то, что нашли время, чтобы помочь мне разобраться в этом и дать четкое объяснение (также символ был отличным моментом, спасибо снова!). Я думаю, что это сработает =]. – Eric

+0

Сообщите нам, если проблема решена. Если вам нужна дополнительная помощь, просто спросите. : D –