2012-02-03 38 views
0

我是這種格式的項目清單:如何從PHP中的字符串中提取特定的信息?

05/01 - 一些基本的:文本這裏(阿爾法,布拉沃,Charli)

第一部分是一個日期,然後它總是其次是 - 。然後是一些表示某種標題或位置的文本,然後是可能包含或不包含在括號內的一些關鍵字。

我想能夠提取美元$標題(包括任何冒號)的$美元和美元關鍵字1 $關鍵字2美元關鍵字3,如果他們在那裏。然後將它們全部分配給我創建的變量,這樣我就可以將它們添加到我的數據庫中。讓它一次完成其中的一個將是一個很好的開始,但最終我希望能夠以該格式粘貼多個項目(沒有任何空格或字符來標記除已有內容之外的區別)並且能夠批量提取它們。

我試過使用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

最簡單的方法是使用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我注意到,你的字符串包含這個符號「 - 」日期之後。這不是我知道的連字符。我用負號將它寫在我的鍵盤上。

Your simbol/mine = - 它們有點不同。

+1

非常感謝您花時間幫助我理解這一點,並提供了一個清晰的解釋(也是符號事物是一個偉大的點,再次感謝!)。我認爲這是行得通的=]。 – Eric 2012-02-03 08:42:37

+0

讓我們知道你是否解決了你的問題。如果你需要更多的幫助,請問。 :d – 2012-02-03 08:49:12

相關問題