2012-03-02 170 views
0

我有输出电影审查制度,当输出我想,出现在它从2代表的关键字 - 消极和积极的是在​​一个不同颜色的任何想法要做到这一点?代码如下PHP输出文本高亮

<?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

谢谢你的答复,但我不能得到他们中的任何一个工作不知道什么即时做错了 – user1045566 2012-03-02 22:03:42

回答

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); 
+0

我如何将颜色包含在内?因为没有输出 – user1045566 2012-03-02 15:27:01

+0

只需将类添加到您的css .negative {color:red; } 。正面{color:black; } 当然在文件中,你需要的地方 回声$ new_review_text; – 2012-03-02 16:31:34

+0

由于某种原因,这似乎不工作 – user1045566 2012-03-02 21:40:42

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>'; 
} 

等.....

+0

但我想在文字中的文字是彩色不是评论类型 – user1045566 2012-03-02 17:17:51

+0

如果你只是从一个段落中选择单词颜色你可以使用相同的原子,只需使用一个span类,你可以追加到每个单词的开始和结尾,而不是整个段落的类。 – chapman84 2012-03-02 17:29:38

-1
  1. 尝试读取查询的响应你送后马上。这样一来,您就不必多次查询的结果会堵塞你的记忆
  2. $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);
  3. str_word_count的fraked后续版本并不多字节安全的。在Smarty中,我使用preg_match_all('#[\w\pL]+#u', $review_text, $matches);作为str_word_count()的UTF-8版本的基础。
  4. PDO仔细一看
  5. 给你的一些变量标识姓名
  6. 始终正确esacape你的输出 - 用htmlspecialchars()是否有被使用!
  7. 这是2012年 - 我们永远不会使用<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.negativespan.positive应该是什么样子。

+0

如何定义我从来没有使用它之前 – user1045566 2012-03-02 16:51:21

+0

古尔的“介绍的CSS的CSS “你会发现像http://www.w3.org/MarkUp/Guide/Style – rodneyrehm 2012-03-02 16:57:58

+0

犯规一堆有用的东西似乎工作 – user1045566 2012-03-02 21:54:52