如何从PHP中提取字符串中的特定信息?

时间:2012-02-03 05:51:48

标签: php string extract

我有一个这种格式的项目列表:

05/01 - 一些基本:文字在这里(Alpha,Bravo,Charli)

第一部分是日期,然后它总是跟着 - 。然后是一些代表某种标题或位置的文本,然后是括号中可能包含或不包含的一些关键字。

我希望能够提取$ title $ 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 – 

^我不能拥有/或任何奇怪的â€。

实际代码和如何执行此操作的说明非常棒!如果你正在使用pregmatch,我真的很感激你如何过滤这个。非常感谢。

1 个答案:

答案 0 :(得分: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 我注意到你的字符串包含这个符号&#34; - &#34;在约会之后。据我所知,这不是连字符。我用减号信号把它写在键盘上。

你的simbol / mine = - 他们有点不同。