1
$phrases = array(
    "New York", "New Jersey", "South Dakota", 
    "South Carolina", "Computer Repair Tech"
);
$string = "I live in New York, but used to live in New Jersey working as a " .
    "computer repair tech.";

$phrasesで見つかった抽出物$string

$new_string出力は次のようになります。New York New Jersey Computer Repair Tech

4

3 に答える 3

3
 $new_string = "";  

 foreach($phrases as $p) {

      $pos = stripos($string, $p);
      if ($pos !== false) {
         $new_string .= " ".$p;
       }
 }
 $new_string = trim($new_string);  // to remove additional space at the beginnig

echo $new_string;

大文字と小文字を区別したい場合は、検索で大文字と小文字を区別しないことに注意してstrpos() くださいstripos

于 2012-11-12T12:03:17.880 に答える
3

stripos を使用する必要があります (最高の効率を得るには): http://php.net/manual/en/function.stripos.php。コードは次のようになります。

$matches = array();
foreach($phrases as $phrase) {
    if(stripos($string,$phrase) !== false){
        $matches[] = $phrase;
    }
}

$new_string = implode(" ",$matches);

Davoの回答と同様に、striposは大文字と小文字を区別しない検索を提供します

于 2012-11-12T12:05:00.543 に答える
2

この機能を試す

$phrases = array("New York", "New Jersey", "South Dakota", "South Carolina", "Computer Repair Tech");
$string = ("I live in New York, but used to live in New Jersey working as a computer repair tech.");

$matches = stringSearch($phrases, $string);

var_dump($matches);


function stringSearch($phrases, $string){
    $phrases1 = trim(implode('|', $phrases));
    $phrases1 = str_replace(' ', '\s', $phrases1);

    preg_match_all("/$phrases1/s", $string, $matches);

    return implode(' ', $matches[0]);
}
于 2012-11-12T12:21:00.863 に答える