我在这个php正则表达式中做错了什么

  • 本文关键字:错了 正则表达式 php php
  • 更新时间 :
  • 英文 :


我有个问题。我不知道是什么原因。我想做的是知道数组的一个元素是否有一个特定的单词,我使用这个正则表达式/.*example.*/,这是代码:

$array = ['example1', '2example', 'no'];
$matches = [];
$var = "example";
foreach($array as $element)
{
preg_match("/.*$var.*/", $element, $matches);
}

但是当我运行上面的代码并看到$matches的值时,它是一个空数组。我做错了什么?

这是因为您正在循环$array,并可能在循环后打印结果。

所以$matches只包含$array中最后一个项目的匹配元素。但由于'no'是最后一个元素,并且它不满足regex要求,所以$matches为空。

为了更好地了解正在发生的事情,请在调用preg_matches()之后,尝试在循环中使用print_r($matches)

然后,试着在循环后调用它,看看有什么不同。

您需要两个变量。一个是当前匹配的结果,另一个是所有匹配的列表。每次通话后,您可以将当前匹配的结果推送到列表中。

$array = ['example1', '2example', 'no'];
$matches = [];
$var = "example";
foreach($array as $element)
{
if (preg_match("/.*$var.*/", $element, $match)) {
$matches[] = $match[0];
}
}
print_r($matches);

最新更新