本文实例讲述了 php 实现根据词频生成 tag 云的方法分享给大家供大家参考具体如下:
这里给定一段文本, 分析文本的词频分布, 生成 tag 云
- <?php
- /**
- * Tag cloud demo based on word frequency
- * @author: unknown
- * @since: 2007-02-27
- */
- // Store frequency of words in an array
- $freqData = array();
- // Random words
- $lorem = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
- Phasellus vestibulum ullamcorper tortor. Aenean quis lacus quis neque
- adipiscing ultricies. Pellentesque tincidunt ligula vitae nibh ornare
- pharetra. Proin dignissim tortor. Donec et ipsum nec tellus gravida
- tempor. Aliquam ullamcorper purus vel felis. Praesent faucibus.
- Curabitur porta. Nulla in lorem quis mi lacinia fringilla. Integer
- adipiscing mi quis felis. Pellentesque habitant morbi tristique senectus
- et netus et malesuada fames ac turpis egestas. Quisque sagittis ante in
- arcu. Sed libero enim, venenatis sit amet, vestibulum at, porttitor id,
- neque. Vestibulum ornare semper erat. Sed tincidunt nibh et massa. Cras
- sed diam. Quisque blandit enim.
- Sed nonummy. Aenean mollis turpis quis enim. Nam massa nulla, varius
- molestie, aliquet et, feugiat eget, nisi. Sed mollis, leo ut pretium
- placerat, nibh turpis egestas ipsum, sed aliquam neque enim in risus.
- Nullam nisl. Sed tincidunt leo quis tellus. Mauris non lorem. Aenean
- tristique justo at arcu. Fusce et lorem. Nam sodales. Mauris condimentum
- diam. Nam commodo. Cum sociis natoque penatibus et magnis dis parturient
- montes, nascetur ridiculus mus. Cras ac risus. Proin et dolor laoreet mi
- gravida sodales. Duis bibendum, ipsum posuere egestas posuere, dui lacus
- feugiat turpis, id tincidunt urna est sit amet est. Cras eu sem.
- ";
- // Get inpidual words and build a frequency table
- foreach(str_word_count( $lorem, 1) as $word )
- {
- // For each word found in the frequency table,
- //increment its value by one
- array_key_exists($word,$freqData)?$freqData[$word]++:$freqData[$word]=0;
- }
- // ==============================================================
- // = Function to actually generate the cloud from provided data =
- // ==============================================================
- function getCloud($data = array(), $minFontSize = 12, $maxFontSize = 30)
- {
- $minimumCount = min( array_values( $data ) );
- $maximumCount = max( array_values( $data ) );
- $spread = $maximumCount - $minimumCount;
- $cloudhtml = '';
- $cloudTags = array();
- $spread == 0 && $spread = 1;
- foreach( $data as $tag => $count )
- {
- $size = $minFontSize + ( $count - $minimumCount )
- * ( $maxFontSize - $minFontSize ) / $spread;
- $cloudTags[] = ''. htmlspecialchars( stripslashes( $tag ) ) .'';
- }
- return join( "\n", $cloudTags ) . "\n";
- }
- ?>
- Sample Tag Cloud
- <?php echo getCloud( $freqData ) ?>
希望本文所述对大家的 php 程序设计有所帮助
来源: https://www.php1.cn/detail/php-15bb7e21d9.html