我需要用什么来从一个字符串中取出两个单词?regex或爆炸


what do i need to use to get 2 words out of a string? regex or explode?

这是字符串:

Added:  yesterday Closing: 17.02.2013

上面的字符串可能有一些变化,例如:

Added:  today Closing: 04.02.2013
Added:  16.01.2013 Closing: 15.02.2013

我需要能够获得"昨天"answers"2013年2月17日",或"今天"answers"2016年2月4日"或"2013年1月16日"answers"13年2月15日">

现在我得到的是。。

$pieces = explode(" ", $initialDate);
echo $pieces[1]; // piece2
echo $pieces[3]; // piece2
echo '<br/><br/>';

但我只得到了"今天"answers"结束",本应得到结束日期,但不起作用。。

我应该使用regex吗?

在这种情况下,可以使用

爆炸。键和值与值前面的键成对出现,因此查找关键字,然后将下一个字符串作为值。我可能会将它作为一个数组的形式返回(key1=>value1,key2=>value2,(

当它工作时,爆炸可能比regex更快,但在大多数情况下,速度并不是一个大因素。

编辑:该示例的元素之间有多个空格,这些空格需要首先删除,或者在结果中跳过空项。

字符串中的空格太多,无法按预期顺序排列。

为了保持explode((,不要盲目地首先用猜测的数字但print_r($pieces);寻址数组成员,然后注意正确的数字,然后使用

如果空格的数量可以变化,那么regexp是唯一明智的选择。尽管它可以通过使用简单的$pieces = preg_split('#'s#',$initialDate); 与regexp组合

您可以使用正则表达式

$string="Added:  today Closing: 04.02.2013";
$result = preg_match_all("/([a-z A-z])*day|(('d{2}'.){2}('d{4}))/", $string,$match);
print_r($match[0]);
 output
 Array ( [0] => today [1] => 04.02.2013 )

pattern"/([a-z a-z](*day/"匹配字符串以day结尾模式"(''d{2}.({2}(''d{4}(("与表单日期(dd.mm.yyyy(或(mm.dd.yyyy(匹配实时演示

只要输入不变,分解就可以了。Regex也很好,但它们通常会使代码难以读取,并降低应用程序的速度。您的文本中似乎缺少了双空格,这会在爆炸的结果中创建一个空字符串。使用var_dump、print_r或更好地使用调试来检查内容。

foreach(explode("'n", $str) as $line)
    print_r(explode(' ', $line));