我正在构建一个单词unscrambler(php/mysql),它接受2到8个字母之间的用户输入,并返回2到8个字母之间可以从这些字母制作的单词,不一定使用所有字母,但绝对不包括比提供的字母多.
用户将输入类似MSIKE或MSIKEI(两个i),或任何字母组合或多次出现的字母.
下面的查询将查找包含M,S,I,K或E的所有单词.
但是,下面的查询还会返回多次出现未请求的字母的单词.例如,即使用户没有输入两个e,并且用户没有输入两个e,或者单词kiss,即使用户没有输入s两次,也会返回单词meek.
SELECT word
FROM words
WHERE word REGEXP '[msike]'
AND has_a=0
AND has_b=0
AND has_c=0
AND has_d=0
(we skip e) or we could add has_e=1
AND has_f=0
...and so on...skipping letters m, s, i, k, and e
AND has_w=0
AND has_x=0
AND has_y=0
AND has_z=0
Run Code Online (Sandbox Code Playgroud)
请注意,如果字母出现在单词中,则列has_a,has_b等为1,否则为0.
我对表模式的任何更改都是开放的.
这个网站:http://grecni.com/texttwist.php是我试图模仿的一个很好的例子.
问题是如何修改查询以不返回多次出现字母的单词,除非用户专门多次输入一个字母.按字长分组将是一个额外的奖励.
非常感谢.
编辑:我根据@awei的建议修改了数据库,has_ {字母}现在是count_ {字母}并存储相应字母中相应字母的总出现次数.当用户多次输入字母时,这可能很有用.例如:用户输入MSIKES(两个s).
另外,我已经放弃了原始SQL语句中所示的REGEXP方法.努力完成PHP方面的大部分工作,但许多障碍仍然存在.
编辑:包含表格的前10行
id word alpha otcwl ospd csw sowpods dictionary enable vowels consonants start_with end_with end_with_ing end_with_ly end_with_xy count_a count_b …Run Code Online (Sandbox Code Playgroud) 试图学习一些jquery来实现自动保存功能,需要一些帮助.我有一些代码来监视表单字段的状态,以查看是否有任何更改.一切正常,但我只需要监控特定表单中的更改,而不是页面上的所有表单输入.在同一页面上有一个搜索框和一个新闻稿表单,当这些表单字段发生变化时,它们也会被检测到,我需要以某种方式或更好的方式过滤掉,只针对特定的表单.
$(function(){
setInterval("CheckDirty()",10000);
$(':input').each(function() {
$(this).data('formValues', $(this).val());
});
});
function CheckDirty()
{
var isDirty = false;
$(':input').each(function () {
if($(this).data('formValues') != $(this).val()) {
isDirty = true;
}
});
if(isDirty == true){
alert("isDirty=" + isDirty);
}
}
Run Code Online (Sandbox Code Playgroud) 我已将simpleopenidselector和lightopenid添加到我的Yii Web应用程序中,它会对用户进行身份验证,并返回带有openid数据的URL.下一步是使用OpenID提供程序中的数据在Yii中创建新标识以登录用户.如何用Yii完成?
另外,我认为我需要创建一个openid表来存储openid,还需要将用户添加到我的用户表中.如果用户已拥有帐户,则将openid添加到其用户帐户以防止多个帐户.
有没有人用Yii实现这一切?如果是这样,我会对它是如何完成感兴趣.
我正在尝试计算textarea中的链接数量,因此我可以将用户限制为不超过三个链接.下面的代码是我到目前为止的代码,但它不起作用.我在想html是编码的,这会以某种方式影响它......或者可能不会.如果是这样,我可以解码吗?有任何想法吗?非常感谢.
$(document).ready(function() {
$('#box-text').keyup(function() {
var links = $('#box-text a');
var total_links=0;
for(var i = 0; i < links.length; i++) {
total_links++;
}
alert("links = " + total_links);
});
});
Run Code Online (Sandbox Code Playgroud)