2012-05-03 5 views
1

私は2列あります。この言葉は、最初の文字列ではないので、私は2番目の文字列にのみ言葉「無煙炭」を維持する必要があり正規表現でこのsubstrを取得するには?

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

ことが可能です。このような何かを?

+0

れていません。 – ArjunShankar

+0

両方の文字列で他の単語が同じ順序であることが保証されていますか? – ArjunShankar

+0

[PHPの2つの文字列の違いを強調表示]の複製が可能です(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

文字列をスペースで区切られた配列に分割し、アイテム数の最も多いものから最も少ないアイテム数の配列を削除することができます。残りのものは必要な単語になります。

EDIT:

$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がそれをしない限り、配列の最大値を検出してから最小値を引いたロジックを作ると思います。 – 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'のない文字列です。 –

関連する問題