特定の文字列に 2 つの文字列が含まれているかどうかを効率的に判断するにはどうすればよいですか?
たとえば、次の文字列が与えられたとしますabc-def-jk-l
。この文字列には、 で区切られた 2 つの文字列が含まれている-
か、一致しません。マッチングの可能性は次のとおりです。
Possible Matches for "abc-def-jk-l" :
abc def-jk-l
abc-def jk-l
abc-def-jk l
さて、一致させる文字列の列は次のとおりです。
Column I Column II
------- -------
1. abc-def A. qwe-rt
2. ghijkl B. yui-op
3. mn-op-qr C. as-df-gh
4. stuvw D. jk-l
指定された文字列が上の列の 2 つの文字列と一致するかどうかを効率的に確認するにはどうすればよいですか? (上記は一致 - 一致abc-def
およびjk-l
)
いくつかの例を次に示します。
abc-def-yui-op [MATCH - Matches 1-B]
abc-def-zxc-v [NO MATCH - Matches 1, but not any in column II.]
stuvw-jk-l [MATCH - Matches 4-D]
mn-op-qr-jk-l [Is this a match?]
さて、上記の文字列が与えられた場合、どうすれば一致を効率的に判断できるでしょうか? (列 i と ii にはそれぞれ、関連するテーブルのインデックス付き列に何百万もの行があるため、効率が重要です!)
UPDATE:
順序は常に i 列、次に ii 列です。(または「一致しない」、つまり、1 つの列のみに一致するか、まったく一致しないことを意味する可能性があります)
ここに役立ついくつかのphpがあります:
<?php
$arrStrings = array('abc-def-yui-op','abc-def-zxc-v','stuvw-jk-l','stuvw-jk-l');
foreach($arrStrings as $string) {
print_r(stringMatchCheck($string));
}
function stringMatchCheck($string) {
$arrI = array('abc-def','ghijkl','mn-op-qr','stuvw');
$arrII = array('qwe-rt','yui-op','as-df-gh','jk-l');
// magic stackoverflow help goes here!
if ()
return array($match[0],$match[1]);
else
return false;
}
?>