2016-03-18 2 views
0
に配列値から

をサブストリングを一致:検索とリターンは、私はこのような配列を持っているPHP

0 => dsadjdasActionsdadas | 123 4Dramdsadsa 
1 => dsakjdsa Crime dasdsadas Sci-Fci 
2 => dasjhdashkAdventuredsadsasa 

を私は「アクション」、「DRAM」以外のすべてをトリミングする、「犯罪」、「SCI-FCI」 、 "Adventure"、 "|"を使用して、配列のキー値をこのようなものに変更します。大文字と小文字を区別する必要があります。

私は、これは結果はなります

$array = array("dsadjdasActionsdadas | 123 4Dramdsadsa", "dsakjdsa Crime | dasdsadas Sci-Fci", "dasjhdashkAdventuredsadsasa"); 
print_r($array); 
$clean_array = array_map('cleanGenre', $array); 
print_r($clean_array); 

function cleanGenre($text) 
{ 
    $genres = array('Action', 'Adventure', 'Crime', 'Dram', 'Sci-Fci'); 
    $parts = explode("|", $text); 
    $result = array(); 
    foreach($parts as $part) 
     foreach($genres as $genre) 
      if (preg_match("/". $genre. "/i", $part)) 
       $result[] = $genre; 
    return (implode(' | ', $result)); 
} 

役に立てば幸い

0 => Action | Dram 
1 => Crime | Sci-Fci 
2 => Adventure 
+1

あなたが達成するために、正確に何をしようとしています。今のところ、単純な文字列関数(例えば、 'substr()'と 'strpos()'を組み合わせたもの)がそうです。より複雑になってきたら、正規表現が必要かもしれませんが、もっと正確にすることができます。 – Jan

答えて

0

シンプルなソリューション:

$arr = [ 
    0 => 'dsadjdasActionsdadas | 123 4Dramdsadsa', 
    1 => 'dsakjdsa Crime dasdsadas |Sci-Fci', 
    2 => 'dasjhdashkAdventuredsadsasa' 
]; 

$result = array_map(function($v){ 
    preg_match_all("/(Action|Dram|Crime|Sci-Fci|Adventure|\|)+?/", $v, $matches); 
    return implode(' ',$matches[0]); 
}, $arr); 


var_dump($result); 
// the output: 
array (size=3) 
    0 => string 'Action | Dram' (length=13) 
    1 => string 'Crime | Sci-Fci' (length=15) 
    2 => string 'Adventure' (length=9) 
0

:私は挿入した

Array 
(
    [0] => dsadjdasActionsdadas | 123 4Dramdsadsa 
    [1] => dsakjdsa Crime | dasdsadas Sci-Fci 
    [2] => dasjhdashkAdventuredsadsasa 
) 
Array 
(
    [0] => Action | Dram 
    [1] => Crime | Sci-Fci 
    [2] => Adventure 
) 

ノート '|' を$配列のシンボル[1]

これは私の非常に最初の投稿です! preg_match_allarray_mapimplode機能を持つ