0
如果我甚至不能提供我曾嘗試過的東西,我很抱歉,因爲我甚至無法確定從哪裏開始。php - 爲字謎求解器添加通配符
我有這個anagram求解器,它工作的很好,問題是我希望能夠添加允許用戶包含的能力?作爲進入該領域的通配符。
例如讓我們說用戶把他們的字母fjsiem?顯然,意味着任何信件。因此,結果將顯示與字段中的字母相匹配的單詞以及包含任何其他字母的任何其他單詞。
我也希望能夠在每個包含通配符的單詞中指出通配符(字母),以便我可以更改其顏色,以便用戶知道哪些單詞具有通配符。
有沒有人可以看看我的代碼並幫助我?
被調用的word文件是combined.txt,它在每一個新行中都包含單詞。
<?
if(!empty($_POST['l'])) {
$time_start = microtime(true);
$l = $_POST['l'];
$l = strtolower($l);
$len = strlen($l);
$a = array('a' => 1, 'b' => 1, 'c' => 1, 'd' => 1, 'e' => 1, 'f' => 1, 'g' => 1, 'h' => 1, 'i' => 1, 'j' => 1, 'k' => 1, 'l' => 1, 'm' => 1, 'n' => 1, 'o' => 1, 'p' => 1, 'q' => 1, 'r' => 1, 's' => 1, 't' => 1, 'u' => 1, 'v' => 1, 'w' => 1, 'x' => 1, 'y' => 1, 'z' => 1);
function contains($word) {
$wlen = strlen($word);
if($wlen < 2 || $wlen > 10) return FALSE;
for($i = 0; $i < $wlen; $i++) {
$w[$i] = $word[$i];
}
$b = $GLOBALS['b'];
foreach($b as $n => $c) {
foreach($w as $k => $v) {
if($v == $c) {
unset($w[$k]);
unset($b[$n]);
break;
}
}
}
if(count($w) > 0) return FALSE;
return TRUE;
}
for($i = 0; $i < $len; $i++) {
$b[$i] = $l[$i];
unset($a[$l[$i]]);
}
$e = 'cat combined.txt';
while(list($k) = each($a)) {
if(!$e) {
$e = "grep -v $k combined.txt";
} else {
$e .= ' | grep -v '. $k;
}
}
exec($e, $o);
settype($w, 'array');
foreach($o as $v) {
if(contains($v)) {
$w[] = $v;
}
}
function mycmp($a, $b) {
$ca = strlen($a);
$cb = strlen($b);
if($ca == $cb) return 0;
if($ca > $cb) return 1;
return -1;
}
usort($w, 'mycmp');
$wc = 0;
foreach($w as $v) {
$c = strlen($v);
if($wc != $c) {
echo "<p>\n";
echo "<b>$c letter words</b><br>";
}
$wc = $c;
echo "$v ";
}
}
?>