2012-02-03 40 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

相关问题