我有一个输出电影评论的系统,当它输出时我想要从2个表中出现的关键字 - 负面和正面是不同的颜色任何想法这样做?代码在
之下<?php
// Connect to database
mysql_connect("sdd", "sdsd", "") or die(mysql_error());
mysql_select_db("sdsd") or die(mysql_error());
$id = mysql_real_escape_string($_POST['reviewid']);
//$query = "select * from review where id = '$id'";
$query = mysql_fetch_assoc(mysql_query("SELECT filmreview FROM review WHERE id = '$id'"));
$pos = mysql_query("SELECT word FROM positive");
$neg = mysql_query("SELECT word FROM negative");
//Variables
$review_text = $query['filmreview'];
$good = 0;
$bad = 0;
// Gets words in to a text array and converts to lower case
$cnt_r = array_count_values(array_map('mb_strtolower',str_word_count($review_text, 1)));
// Gets the positive words and check for the word in the text
while($check = mysql_fetch_assoc($pos)){
$lower = mb_strtolower($check['word']);
if(isset($cnt_r[$lower])){
$good+= $cnt_r[$lower];
echo $check ['word'];
echo "<p>";
}
}
// Gets the negative words and check for the word in the text
while($check = mysql_fetch_assoc($neg)){
$lower = mb_strtolower($check['word']);
if(isset($cnt_r[$lower])){
$bad+= $cnt_r[$lower];
echo $check ['word'];
echo "<p>";
}
}
// If there are more positive words than negative than the review is positive
if ($good > $bad)
{
echo "<p>";
echo "This is a positive review";
echo "<p>";
}
// If there are more negative words than positive than the review is negative
else if ($good < $bad)
{
echo "<p>";
echo "This is a negative review";
echo "<p>";
}
// If there are the same amount of positive and negative words than the review is average
else if ($good == $bad)
{
echo "<p>";
echo "This is an average review";
echo "<p>";
}
//Prints out the number of postive and negative words found
echo "Good words: " . $good . " and Bad words: " . $bad;
echo "<p>";
echo $query ['filmreview'];
echo "<p>";
echo "This is <font color=\"blue\">blue</font>!";
echo "<form method='post' action='welcome.html'>";
echo "<input type='submit' name='searchagain' value='Search'>";
?>
答案 0 :(得分:2)
您可以使用CSS类。
在您的样式表或您页面中的样式标记中,您可以创建css类:
p .negative { color: red; }
p .positive { color: black; }
现在只需将该类添加到您的段落中,它就会应用您想要的样式。
// If there are more positive words than negative than the review is positive
if ($good > $bad)
{
echo '<p class="positive">';
echo 'This is a positive review';
echo '</p>';
}
// If there are more negative words than positive than the review is negative
else if ($good < $bad)
{
echo '<p class="negative">';
echo 'This is a negative review';
echo '</p>';
}
等.....
答案 1 :(得分:0)
只需在文本中搜索并找到您的关键字,然后只需将其替换即可。 所以大致
if($postivekeyword) {
$newpostivekeyword = '<span class="positive">'.$postivekeyword.'</span>';
}
if($negativekeyword) {
$newnegativekeyword = '<span class="negative">'.$negativekeyword.'</span>';
}
然后只是
$new_review_text = str_replace($postivekeyword, $newpostivekeyword, $review_text);
答案 2 :(得分:-1)
$cnt_r = array_count_values(array_map('mb_strtolower',str_word_count($review_text, 1)));
似乎是$cnt_r = str_word_count(mb_strtolower($review_text), 2);
preg_match_all('#[\w\pL]+#u', $review_text, $matches);
作为str_word_count()的UTF-8版本的基础。<font>
标签!改用CSS!<?php
$query = mysql_fetch_assoc(mysql_query("SELECT filmreview FROM review WHERE id = '$id'"));
$review_text = $query['filmreview'];
// Gets words in to a text array and converts to lower case
$review_words = array_count_values(array_map('mb_strtolower',str_word_count($review_text, 1)));
$positive_words = array();
$negative_words = array();
$positive_words_count = 0;
$negative_words_count = 0;
// Gets the positive words and check for the word in the text
$res = mysql_query("SELECT word FROM positive");
while ($row = mysql_fetch_assoc($res)){
// why isn't this already stored lower-case in database?
$_word = mb_strtolower($row['word']);
if (isset($review_words[$_word])){
$positive_words_count += $review_words[$_word];
$positive_words[] = $_word;
}
}
// Gets the negative words and check for the word in the text
$res = mysql_query("SELECT word FROM negative");
while ($row = mysql_fetch_assoc($res)){
// why isn't this already stored lower-case in database?
$_word = mb_strtolower($row['word']);
if (isset($review_words[$_word])){
$negative_words_count += $review_words[$_word];
$negative_words[] = $_word;
}
}
if ($positive_words_count > $negative_words_count) {
// If there are more positive words than negative than the review is positive
echo "<p>This is a positive review<p>";
} elseif ($positive_words_count < $negative_words_count) {
// If there are more negative words than positive than the review is negative
echo "<p>This is a negative review<p>";
} else {
// If there are the same amount of positive and negative words than the review is average
echo "<p>This is an average review<p>";
}
// highlight positive/negative words
$review_text = htmlspecialchars($review_text);
$pattern = '#\b(' . join('|', $positive_words) . ')\b#i';
$review_text = preg_replace($pattern, "<span class=\"positive\"\\1</span>", $review_text);
$pattern = '#\b(' . join('|', $negative_words) . ')\b#i';
$review_text = preg_replace($pattern, "<span class=\"negative\"\\1</span>", $review_text);
//Prints out the number of postive and negative words found
echo "Good words: " . $positive_words_count . " and Bad words: " . $negative_words_count;
echo "<p>" . $review_text . "<p>";
echo "This is <font color=\"blue\">blue</font>!";
在CSS中的某个位置定义span.negative
和span.positive
应该是什么样的。