【问题标题】:find out match word and display the position of it from the array values using php找出匹配词并使用php从数组值中显示它的位置
【发布时间】:2017-03-02 05:43:32
【问题描述】:

我有一组数组数据,我需要从数组的值中找出匹配词

$my_word = 'mbusa.com';

$array_data = array:6 [
  0 => array:2 [
    0 => "Mercedes-Benz Luxury Cars: Sedans, SUVs, Coupes and Wagons"
    1 => "/l/?kh=-1&uddg=https%3A%2F%2Fwww.mbusa.com%2Fmercedes%2Findex"
  ]
  1 => array:2 [
    0 => "Mercedes-Benz - International Corporate Website"
    1 => "/l/?kh=-1&uddg=https%3A%2F%2Fwww.mercedes%2Dbenz.com%2F"
  ]
  2 => array:2 [
    0 => "New Mercedes-Benz Cars - Autotrader"
    1 => "/l/?kh=-1&uddg=http%3A%2F%2Fwww.autotrader.com%2FMercedes%2BBenz%2Dcars.jsp"
  ]
  3 => array:2 [
    0 => "Mercedes-Benz C-Class - mbusa.com"
    1 => "/l/?kh=-1&uddg=https%3A%2F%2Fwww.mbusa.com%2Fmercedes%2Fvehicles"
  ]
  4 => array:2 [
    0 => "Mercedes-Benz - New models: Pricing, MPG, and Ratings | Cars.com"
    1 => "/l/?kh=-1&uddg=https%3A%2F%2Fwww.cars.com%2Fresearch%2Fmercedes_benz%2F"
  ]
  5 => array:2 [
    0 => "Mercedes-Benz Reviews - Mercedes-Benz Cars | Edmunds"
    1 => "/l/?kh=-1&uddg=https%3A%2F%2Fwww.edmunds.com%2Fmercedes%2Dbenz%2F"
  ]
  6 => array:2 [
    0 => "Mercedes-Benz - Wikipedia"
    1 => "/l/?kh=-1&uddg=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FMercedes%2DBenz"
  ]
  ]

在这个数组中,我需要找到 my_word 并且需要显示位置mbusa.com found at N position

我正在尝试使用下面的代码

$matches = array_filter($array_data, function($var) use ($my_word){ 

  return preg_match("/\b$my_word\b/i", $var); 

});

但它会给出类似

的错误

preg_match() 期望参数 2 是字符串,给定数组

有什么建议吗?

谢谢。

【问题讨论】:

  • 遍历 $array_data 并比较 $my_word 和 $array_data[i][1] 的值。我不确定 php 中的确切语法。
  • N位是什么意思??
  • 我需要知道myword匹配的位置
  • @Anant 是的,我正在检查

标签: php arrays regex


【解决方案1】:

你可以这样做:-

foreach ($array_data as $key=>$val){
     foreach ($val as $key1=>$v){
        if(strpos($v,$my_word)!==false){
          echo 'match position is $array_data['.$key."][".$key1."]";
          echo PHP_EOL;
        }
     }
 }

输出:- https://eval.in/745846

【讨论】:

  • 5367683 很高兴为您提供帮助。
  • 感谢您的帮助。代码中还有一个小问题,我的网址就像 /l/?kh=-1&uddg=https%3A%2F%2Fwww.mbusa.com%2Fmercedes%2Findex 一样,但我的实际网址是 https://www.mbusa.com/mercedes/index 。但是如何在我看来以实际格式打印它。请提出建议。
  • 知道了。谢谢。
【解决方案2】:

这样你就可以做到:

$count = 0;

for ($i = 0; $i < count($array_data); $i++) {
    for ($j = 0; $j < count($array_data[$i]); $j++) {
        if (strpos($array_data[$i][$j], 'mbusa') !== false) {
            echo "Found at Postion ".$j."<br>";
            echo $count++;
        }
    }
}
echo "Found " . $count . "Times";

【讨论】:

    【解决方案3】:

    您可以使用 strpos 函数来查找一个字符串在另一个字符串中的出现:

    $text = "/l/?kh=-1&uddg=https%3A%2F%2Fwww.mbusa.com%2Fmercedes%2Findex";
    
    if (strpos($text, 'mbusa') !== false) {
        echo 'true';
    }
    

    【讨论】:

    • 我需要遍历整个数组。
    猜你喜欢
    • 2011-07-10
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    • 2016-07-30
    相关资源
    最近更新 更多