php搜索逗号分隔的字符串并获取匹配的元素

php搜索逗号分隔的字符串并获取匹配的元素,php,regex,filtering,Php,Regex,Filtering,我有一个问题,如果有人能帮我解决这个问题。我有一个用逗号分隔的字符串,我想找到一个部分匹配的项: $search = "PrintOrder"; $string = "IDperson, Inscription, GenomaPrintOrder, GenomaPrintView"; 作为筛选结果,我只需要从部分匹配中获取完整字符串: $result = "GenomaPrintOrder"; 这将得到一个数组,其中包含与搜索字符串匹配的所有字符串 这将获得一个数组,其中包含与搜索字符串匹配

我有一个问题,如果有人能帮我解决这个问题。我有一个用逗号分隔的字符串,我想找到一个部分匹配的项:

$search = "PrintOrder";
$string = "IDperson, Inscription, GenomaPrintOrder, GenomaPrintView";
作为筛选结果,我只需要从部分匹配中获取完整字符串:

$result = "GenomaPrintOrder";
这将得到一个数组,其中包含与搜索字符串匹配的所有字符串


这将获得一个数组,其中包含与搜索字符串匹配的所有字符串。

您可以使用正则表达式获得结果:

$search=“PrintOrder”;
$string=“IDperson,铭文,GenomaPrintOrder,GenomaPrintView”;
$regex='/([^,]*'.preg_quote($search,'/')。[^,]*])/;
preg_match($regex,$string,$match);
$result=trim($match[1]);//$结果==“GenomaPrintOrder”

您可以使用正则表达式获得结果:

$search=“PrintOrder”;
$string=“IDperson,铭文,GenomaPrintOrder,GenomaPrintView”;
$regex='/([^,]*'.preg_quote($search,'/')。[^,]*])/;
preg_match($regex,$string,$match);
$result=trim($match[1]);//$结果==“GenomaPrintOrder”

使用
preg\u match\u all
您可以这样做

Php代码

<?php
  $subject = "IDperson, Inscription, GenomaPrintOrder, GenomaPrintView, NewPrintOrder";
  $pattern = '/\b([^,]*PrintOrder[^,]*)\b/';
  preg_match_all($pattern, $subject, $matches, PREG_SET_ORDER);
  foreach ($matches as $val) {
      echo "Matched: " . $val[1]. "\n";
  }
?>

使用
preg\u match\u all
您可以这样做

Php代码

<?php
  $subject = "IDperson, Inscription, GenomaPrintOrder, GenomaPrintView, NewPrintOrder";
  $pattern = '/\b([^,]*PrintOrder[^,]*)\b/';
  preg_match_all($pattern, $subject, $matches, PREG_SET_ORDER);
  foreach ($matches as $val) {
      echo "Matched: " . $val[1]. "\n";
  }
?>

既然已经有这么多不同的答案,下面是另一个:

$result = preg_grep("/$search/", explode(", ", $string));
print_r($result);

既然已经有这么多不同的答案,下面是另一个:

$result = preg_grep("/$search/", explode(", ", $string));
print_r($result);

您是否尝试过使用
preg_match
?如果您知道聚合字符串是如何粘合在一起的,您可以使用该胶水将该字符串分解为一个数组并在其上循环。
$matches=array_filter(分解(',',$string),函数($value)use($search){return strop($value,$search)!==false;})你可能想考虑好的答案,即使你没有接受它们。你有没有尝试过<代码> PrggMatals<代码>?如果你知道聚合字符串是如何被粘在一起的,你可以用那个胶把这个字符串炸成一个数组并在它上面循环。<代码> $Matal= Alray-Fug(爆炸(’,’,$string),函数)($value)使用($earch){返回StruPs($value,$earch)!= = false;});你可能想考虑好的答案,即使你没有接受它们,我did。得到这个错误:警告:PrimgMatch():编译失败:在偏移量处没有要重复的内容25@WalterNuñez:我已经编辑了代码。请检查。在最新的示例中,我添加了一个额外的字符串
NewPrintOrder
,以演示多个匹配。获取此错误:警告:preg_match():编译失败:在偏移量处没有要重复的内容25@WalterNuñez:我已经编辑了代码。请检查。在最新的示例中,我添加了一个额外的字符串
NewPrintOrder
,以演示多个匹配项。
$result = preg_grep("/$search/", explode(", ", $string));
print_r($result);