2012-05-03 24 views
1

我有2個字符串:如何用正則表達式獲得這個substr?

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

我需要第二個字符串中只保留字「無煙煤」,因爲這個詞是不是第一個字符串中

是否有可能做這樣的事情?

+0

不能與一個正則表達式並沒有額外的語句。 – ArjunShankar

+0

是否保證其他單詞在兩個字符串中的順序相同? – ArjunShankar

+0

[突出顯示PHP中兩個字符串之間的區別](http://stackoverflow.com/questions/321294/highlight-the-difference-between-two-strings-in-php) –

回答

0

試試這個:

<?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; 
?> 
+0

我的用法似乎沒問題,謝謝! – bahamut100

1

您可以將字符串拆分爲一個由空格分隔的數組,然後從具有最多項目數的項目中刪除最少數量的項目的數組,並且您留下的所有項目都將是您需要的單詞。

編輯:

$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); 
+1

在這種情況下,我認爲你會做一些邏輯,也檢測到最大的數組,然後減去最小的,除非array_diff這樣做,一直以來,因爲我觸摸PHP :) – FRoZeN

1

也許不是最好的方式去了解它,但嘗試使用explodearray_diff像這樣:

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

$diff將是單詞的數組目前在$str2但不在$str1

0
$words1 = explode(" ",$str1); 
$words2 = explode(" ",$str2); 

print_r(array_diff($words1,words2); 

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

+1

這可能工作,如果'$ str1'是包含'Anthracite'和'$ str2'的字符串是沒有'Anthracite'的字符串。 –