【问题标题】:How to get this substr with a regex?如何使用正则表达式获取这个 substr?
【发布时间】:2012-05-03 08:08:50
【问题描述】:

我有 2 个字符串:

Ass. Présentation Chiara D29,5cm
Ass. Présentation Chiara Anthracite D29,5cm

我只需要在第二个字符串中保留“Anthracite”这个词,因为这个词不在第一个字符串中

有可能做这样的事情吗?

【问题讨论】:

标签: php regex string substring


【解决方案1】:

也许不是最好的方法,但尝试像这样使用 explodearray_diff

$arr1 = explode(' ', $str1);
$arr2 = explode(' ', $str2);
$diff = array_diff($arr2, $arr1);

$diff 将是出现在$str2 中但不在$str1 中的单词数组。

【讨论】:

    【解决方案2】:

    您可以将字符串拆分为一个以空格分隔的数组,然后从项数最多的数组中删除项数最少的数组,剩下的就是您需要的单词。

    编辑:

    $string1 = "Ass. Présentation Chiara D29,5cm"
    $array1 = explode(" ",$string1);
    
    $string2 = "Ass. Présentation Chiara Anthracite D29,5cm"
    $array2 = explode(" ",$string2);
    
    $difference = array_diff($array2,$array1);
    

    【讨论】:

    • 在这种情况下,我认为你会做一些逻辑来检测最大的数组,然后减去最小的,除非 array_diff 这样做,因为我接触 php 已经有一段时间了:)
    【解决方案3】:

    试试这个:

    <?php
    
            $keywordString = "Ass. Présentation Chiara D29,5cm";
            $keywordArray  = explode(" ", $keywordString);        
    
            $string = "Ass. Présentation Chiara Anthracite D29,5cm";
            $stringArray = explode(" ", $string);
    
    
            foreach ($keywordArray as $keyword)
                    $stringArray = preg_grep("/{$keyword}/i", $stringArray, PREG_GREP_INVERT);
    
            echo "<pre>";
            print_r($stringArray);
            echo "</pre>";
            exit;
    ?>
    

    【讨论】:

      【解决方案4】:
      $words1 = explode(" ",$str1);
      $words2 = explode(" ",$str2);
      
      print_r(array_diff($words1,words2);
      

      http://php.net/manual/en/function.array-diff.php

      【讨论】:

      • 如果$str1 是包含Anthracite 的字符串并且$str2 是不包含Anthracite 的字符串,这可能会起作用。
      猜你喜欢
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-29
      • 1970-01-01
      • 2023-02-15
      相关资源
      最近更新 更多