1

次の文字列があるとします。

こんにちは、私の車は赤で靴は青です

次の単語に一致させたい:

青、赤、オレンジ、紫

したがって、変数でこれらの 4 つの単語を検索し、最初の単語を返します。この例では、返される単語は「red」になります。しかし、車が青色の場合、可能性のある一致のリストを最初に見つけるため、単語 blue が最初に返されます。

これどうやってするの?

4

3 に答える 3

4
$str  = 'hello my car is red and my shoe is blue';
$find = 'blue,red,orange,purple';
$pattern = str_replace(',','|',$find);
preg_match('#'.$pattern.'#i',$str,$match);
echo $match[0];

私があなたの質問を正しく理解していれば.:-)

于 2012-07-03T11:32:27.397 に答える
0

大文字と小文字を区別 :

<?php
$subject = "hello my car is blue and my shoe is blue";                                                                                      
$pattern = '/blue|red|orange|purple/';                                                                                                      
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);                                                                              
if (!empty($matches)) {                                                                                                                     
  echo 'Matched `' . $matches[0][0] . '` at index `' . $matches[0][1] . '`';                                                                
} else {                                                                                                                                    
  echo 'Nothing matched';                                                                                                                   
} 
?>

大文字小文字を区別しません :

<?php
$subject = "hello my car is blue and my shoe is blue";                                                                                      
$pattern = '/blue|red|orange|purple/';                                                                                                      
preg_match(strtolower($pattern), strtolower($subject), $matches, PREG_OFFSET_CAPTURE);                                                                              
if (!empty($matches)) {                                                                                                                     
  echo 'Matched `' . $matches[0][0] . '` at index `' . $matches[0][1] . '`';                                                                
} else {                                                                                                                                    
  echo 'Nothing matched';                                                                                                                   
} 
?>
于 2012-07-03T11:35:14.670 に答える
0
$string = 'hello my car is red and my shoe is blue';
$words = array ( 'blue', 'red', 'orange', 'purple' );

function checkForWords ( $a, $b ) {

    $pos = 0;
    $first = 0;
    $new_word = '';

    foreach ( $b as $value ) {
        $pos = strpos( $a, $value );

        # First match
        if ( !$first && $pos ) {
            $new_word = $value;
            $first = $pos;          
        }

        # Better match
        if ( $pos && ( $pos < $first ) ) {
            $new_word = $value;
            $first = $pos;
        }
    }
    return $new_word;

}

echo checkForWords ( $string, $words );
于 2012-07-03T11:38:26.683 に答える