我正在编写一个脚本,它贯穿用户注释,将注释分解为单个单词,并将这些单词添加到mysql中的一个表中。原因是为了找出评论中使用最多的词。
此外,在添加到表中之前,我正在将这些单词与要忽略的单词列表进行匹配。
我无法理解的是,如何也忽略任何以@符号作为单词中字符的单词。
下面是我目前的情况,除了匹配@之外,它的工作原理是
$added_count=0;
$words_to_forget = array();
$forget_words = "SELECT forget FROM word_bank_forget";
$result = $conn->query($forget_words) or die($conn->error.__LINE__);
while($row = $result->fetch_assoc())
{
$words_to_forget[] = $row['forget'];
}
$survey_words = "SELECT comments,clinic_id,sid FROM survey WHERE word_bank='0'";
$result = $conn->query($survey_words) or die($conn->error.__LINE__);
while($row = $result->fetch_assoc())
{
$comments = $row['comments'];
$clinic_id = $row['clinic_id'];
$sid = $row['sid'];
$wordChunks = explode(" ", $comments);
for($i = 0; $i < count($wordChunks); $i++){
$broken_word = strtolower($wordChunks[$i]);
$broken_word = str_replace(array('.', ''), '' , $broken_word);
$broken_word = str_replace(array(',', ''), '' , $broken_word);
if ($broken_word != '' ){
if (!in_array($broken_word, $words_to_forget)) {
mysql_query("INSERT into word_bank (word,clinic_id) values ('$broken_word','$clinic_id')");
$added_count++;
}
mysql_query("UPDATE survey SET word_bank='1' WHERE sid='$sid'");
}
}
}我试过用正则表达式,但不能让它起作用。我可以将@符号与/\@/匹配,但如果匹配,则不能告诉php忽略这个单词。
也许一些类似的东西(不起作用):
$pattern = '/\@/';
if !preg_match($pattern, $broken_word){
}任何帮助都将不胜感激。谢谢。
发布于 2015-02-27 20:55:04
if (strpos($word, '@') !== false)
https://stackoverflow.com/questions/28773999
复制相似问题