字符串的PHP字长密度/计数计算
给定一个文本,我如何计算单词长度的密度/计数,从而得到这样的输出字符串的PHP字长密度/计数计算,php,keyword,Php,Keyword,给定一个文本,我如何计算单词长度的密度/计数,从而得到这样的输出 1个字母单词:52/1% 2个字母单词:34/0.5% 3个字母单词:67/2% 找到这个,但不是python 您可以从将文本拆分为文字开始,使用(作为非常/太简单的解决方案)或(允许使用功能更强的内容): 然后,对单词进行迭代,得到每一个单词的长度,使用;将这些长度放入一个数组: $results = array(); foreach ($words as $word) { $length = strlen(
- 1个字母单词:52/1%
- 2个字母单词:34/0.5%
- 3个字母单词:67/2%
然后,对单词进行迭代,得到每一个单词的长度,使用;将这些长度放入一个数组:
$results = array();
foreach ($words as $word) {
$length = strlen($word);
if (isset($results[$length])) {
$results[$length]++;
}
else {
$results[$length] = 1;
}
}
如果您正在使用UTF-8,请参阅
在循环结束时,
$results
将如下所示:
array
4 => int 5
2 => int 2
7 => int 1
5 => int 1
计算百分比所需的总字数可以通过以下方式找到:
- 通过增加
循环内的计数器foreach
- 或者在循环完成后调用
$results
对于百分比的计算,这是一个数学问题——我不会有太大帮助,关于这个问题,你可以先将文本拆分成单词,使用(作为一个非常/太简单的解决方案)或(允许使用更强大的内容):
然后,对单词进行迭代,得到每一个单词的长度,使用;将这些长度放入一个数组:
$results = array();
foreach ($words as $word) {
$length = strlen($word);
if (isset($results[$length])) {
$results[$length]++;
}
else {
$results[$length] = 1;
}
}
如果您正在使用UTF-8,请参阅
在循环结束时,
$results
将如下所示:
array
4 => int 5
2 => int 2
7 => int 1
5 => int 1
计算百分比所需的总字数可以通过以下方式找到:
- 通过增加
循环内的计数器foreach
- 或者在循环完成后调用
$results
对于百分比的计算,这是一个数学问题——我不会有太大帮助,关于这个问题^^ ^你可以将文本按空格分解,然后计算每个结果单词的字母数。如果有标点符号或任何其他单词分隔符,您必须考虑这一点
$lettercount = array();
$text = "lorem ipsum dolor sit amet";
foreach (explode(' ', $text) as $word)
{
@$lettercount[strlen($word)]++; // @ for avoiding E_NOTICE on first addition
}
foreach ($lettercount as $numletters => $numwords)
{
echo "$numletters letters: $numwords<br />\n";
}
$lettercount=array();
$text=“lorem ipsum dolor sit amet”;
foreach(分解(“”,$text)为$word)
{
@$lettercount[strlen($word)]++;//@用于避免在首次添加时发出E_通知
}
foreach($numletters=>$numwords的字母计数)
{
回显“$numletters字母:$numwords
\n”;
}
ps:我还没有证明这一点,但应该可以你可以将文本按空格分解,然后计算每个结果单词的字母数。如果有标点符号或任何其他单词分隔符,您必须考虑这一点
$lettercount = array();
$text = "lorem ipsum dolor sit amet";
foreach (explode(' ', $text) as $word)
{
@$lettercount[strlen($word)]++; // @ for avoiding E_NOTICE on first addition
}
foreach ($lettercount as $numletters => $numwords)
{
echo "$numletters letters: $numwords<br />\n";
}
$lettercount=array();
$text=“lorem ipsum dolor sit amet”;
foreach(分解(“”,$text)为$word)
{
@$lettercount[strlen($word)]++;//@用于避免在首次添加时发出E_通知
}
foreach($numletters=>$numwords的字母计数)
{
回显“$numletters字母:$numwords
\n”;
}
ps:我还没有证明这一点,但应该有效使用preg\u replace删除标点符号会更明智
$txt = "Sean Hoare, who was first named News of the World journalist to make hacking allegations, found dead at Watford home. His death is not being treated as suspiciou";
$txt = str_replace( " ", " ", $txt );
$txt = str_replace( ".", "", $txt );
$txt = str_replace( ",", "", $txt );
$a = explode( " ", $txt );
$cnt = array();
foreach ( $a as $b )
{
if ( isset( $cnt[strlen($b)] ) )
$cnt[strlen($b)] += 1;
else
$cnt[strlen($b)] = 1;
}
foreach ( $cnt as $k => $v )
{
echo $k . " letter words: " . $v . " " . round( ( $v * 100 ) / count( $a ) ) . "%\n";
}
使用preg_replace可以更聪明地删除标点符号
$txt = "Sean Hoare, who was first named News of the World journalist to make hacking allegations, found dead at Watford home. His death is not being treated as suspiciou";
$txt = str_replace( " ", " ", $txt );
$txt = str_replace( ".", "", $txt );
$txt = str_replace( ",", "", $txt );
$a = explode( " ", $txt );
$cnt = array();
foreach ( $a as $b )
{
if ( isset( $cnt[strlen($b)] ) )
$cnt[strlen($b)] += 1;
else
$cnt[strlen($b)] = 1;
}
foreach ( $cnt as $k => $v )
{
echo $k . " letter words: " . $v . " " . round( ( $v * 100 ) / count( $a ) ) . "%\n";
}
我用php限制某些字符串中字数字符的简单方法。
函数校验字长度($string,$nr\u limit){
$text\u words=分解(“,$string);
$text\u count=计数($text\u单词);
对于($i=0;$i<$text_count;$i++){//从text获取数组字
//回显$text_单词[$i];”
//从文本中获取数组单词
$cc=(strlen($text_words[$i]);//从数组中获取每个单词的长度字符
如果($cc>$nr\u limit)//检查限制
{
$d=“0”;
}
}
return$d;//返回值或null
}
$string\u to\u check=“heare是要检查的文本”;//要检查的文本
$nr_string_limit='5';//limit len字的值
$rez_fin=checkWord_len($string_to_check,$nr_string_limit);
如果($rez_fin='0')
{
呼应“假”;
//执行错误代码
}
elseif($rez_fin==null)
{
呼应“真”;
//执行正确的代码
}
?>
我用php限制某些字符串中的字数和字符数的简单方法。
函数校验字长度($string,$nr\u limit){
$text\u words=分解(“,$string);
$text\u count=计数($text\u单词);
对于($i=0;$i<$text_count;$i++){//从text获取数组字
//回显$text_单词[$i];”
//从文本中获取数组单词
$cc=(strlen($text_words[$i]);//从数组中获取每个单词的长度字符
如果($cc>$nr\u limit)//检查限制
{
$d=“0”;
}
}
return$d;//返回值或null
}
$string\u to\u check=“heare是要检查的文本”//要检查的文本
$nr_string_limit='5'//限制len字的值
$rez_fin=checkWord_len($string_to_check,$nr_string_limit);
如果($rez_fin='0')
{
呼应“假”;
//执行错误代码
}
elseif($rez_fin==null)
{
呼应“真”;
//执行正确的代码
}
?>
太快了:(-为了增加这一点,在分解文本之前,最好不要用任何符号替换所有标点符号,因为如果你有这样的内容:“Java没问题,但PHP是最好的。”-最好=5个字符,而实际上是4:)@hex4 true;或者他可以在foreach循环开始时过滤单词(和字符),然后再计算单词的长度。太快了:(-为了添加到这一点,在分解文本之前,最好用str_替换所有标点符号,而不使用任何符号,因为如果您有这样的内容:“Java可以,但PHP是最好的。”-best=5个字符,实际为4:)@hex4 true;或者他可以在foreach循环的开头过滤单词(和字符),然后再计算单词的长度。