次の文字列があるとします。
こんにちは、私の車は赤で靴は青です
次の単語に一致させたい:
青、赤、オレンジ、紫
したがって、変数でこれらの 4 つの単語を検索し、最初の単語を返します。この例では、返される単語は「red」になります。しかし、車が青色の場合、可能性のある一致のリストを最初に見つけるため、単語 blue が最初に返されます。
これどうやってするの?
次の文字列があるとします。
こんにちは、私の車は赤で靴は青です
次の単語に一致させたい:
青、赤、オレンジ、紫
したがって、変数でこれらの 4 つの単語を検索し、最初の単語を返します。この例では、返される単語は「red」になります。しかし、車が青色の場合、可能性のある一致のリストを最初に見つけるため、単語 blue が最初に返されます。
これどうやってするの?
$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];
私があなたの質問を正しく理解していれば.:-)
大文字と小文字を区別 :
<?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';
}
?>
$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 );