从strpos值数组中提取子字符串

时间:2013-08-07 21:19:50

标签: php arrays strpos

我有以下字符串

$string = "Hello World!<br />- 8/7/2013<br />Content<br />- 8/6/2013<br />Hello World";

我想提取破折号+空格(“ - ”)和下一个换行标记之间的所有信息。那可能吗?我一直在研究Google几个小时但没有运气。我想我需要一个“ - ”和以下换行标记的数组,然后批量生成它们。但是当然如果你能以任何其他方式做到这一点,那将非常感激!

2 个答案:

答案 0 :(得分:0)

正则表达式将为您提供最大的控制权,但这里有一个使用strpos和substr的快速演示来获取您的要求:

$strStart = strpos($string, '- ');
$strLength = strpos($string, '<br') - $strStart;
substr( $string, $strStart, $strLength );

答案 1 :(得分:0)

我已更新处理多次出现的答案。

您可以使用简单的正则表达式执行此操作:

preg_match_all("@- (.*)<br />@U", $string, $matches);
print_r($matches[1]);

以上将打印

Array
(
    [0] => 8/7/2013
    [1] => 8/6/2013
)

这与模式- (.*)<br />匹配,(.*)表示任何。这里的@用作分隔符来将实际模式与修饰符分开(在这种情况下U表示不匹配的匹配)。