在字符串中搜索数据。常用表达?

时间:2009-09-29 15:55:41

标签: php regex string

我需要一些字符串来从中获取数据。我需要一种简单的方法来告诉PHP查看字符串并删除我需要的部分之前和之后的数据。一个例子是:

When: Sat 19 Sep 2009 22:00 to Sun 20 Sep 2009 03:00 

我想删除“何时:”然后删除&以及它之后的一切。这是一个正则表达式的东西?以前没用过它们。

3 个答案:

答案 0 :(得分:1)

我不会为此使用正则表达式。

$data = substr($input, 6, strpos($input, '&') - 6);

答案 1 :(得分:1)

是的,正则表达式可以在睡眠中做这种事情。

$result = preg_replace('/When:(.*)&.*/', '$1', $text);

<强>更新 如果你只想找到日期范围,在许多其他文本的中间,这里是一个粗略的正则表达式,将匹配问题中的那个...

if (preg_match('/[a-z]{3} [0-9]{2} [a-z]{3} [0-9]{4} [0-9]{2}:[0-9]{2} to [a-z]{3} [0-9]{2} [a-z]{3} [0-9]{4} [0-9]{2}:[0-9]{2}/i', $text, $regs)) {
    $result = $regs[0];
} else {
    $result = "";
}

答案 2 :(得分:0)

所以你想保持“2009年9月19日星期六22:00至2009年9月20日星期日03:00”

好吧,你可以选择正则表达式。我对PHP中的Regexp了解不多,但在PERL中,您可以像

那样进行操作

/ ^当:(。*)\&amp; nbsp; $ /。

然后可以使用(。*)来获得您想要保留的所有内容。在PERL中,这将是$ 1 var。

或者你可以做类似

的事情

/ ^何时:(。)\&amp;。 $ /如果内容在&amp;是可变的。

另外,你必须要小心。如果你要保留的字符串包含&amp;,那么它可能会有点棘手。

但RegExp通常是获得此类工作的方法。