Pergunta

Preciso contar palavras em uma string usando PHP ou JavaScript (de preferência PHP). O problema é que a contagem precisa ser a mesma de que funciona no Microsoft Word, porque é aí que as pessoas montam seus textos originais, para que esse seja o quadro de referência. PHP tem uma função de contagem de palavras (http://php.net/manual/en/function.strword-count.php) Mas isso não é 100% o mesmo que eu sei.

Algum indicador?

Foi útil?

Solução

O verdadeiro problema aqui é que você está tentando desenvolver uma solução sem realmente entender os requisitos exatos. Este não é um problema de codificação, mas é um problema com as especificações.

O cerne da questão é que sua O algoritmo de contagem de palavras é diferente de Palavras Algoritmo de contagem de palavras-potencialmente por boas razões, pois existem várias casos de borda a serem considerados sem respostas óbvias. Portanto, sua pergunta deve ser realmente "que algoritmo usa a palavra para calcular a contagem de palavras?" E se você pensar sobre isso um pouco, já sabe a resposta-é um software proprietário de código fechado para que ninguém possa ter certeza. E mesmo se você Faz Trabalhe, esta não é uma interface pública para que possa ser facilmente alterada na próxima versão.

Basicamente, acho que é fundamentalmente uma má idéia projetar seu software para que ele funcione de forma idêntica a algo que você não pode entender completamente. Pessoalmente, eu me concentraria em apenas desenvolver uma contagem de palavras sensata, documentando o algoritmo por trás dele e justificando por que é um razoável Método de contar palavras (apontando que não existe uma maneira verdadeira).

Se você devo Conforme à tentativa do Word por algum motivo comercial míope, então a tarefa número um é descobrir qual metodologia eles usam até o ponto em que você pode anotar um algoritmo no papel. Mas isso não será fácil, será muito difícil de verificar completamente e poderá mudar sem aviso prévio ...:-//

Outras dicas

sharePoint tem um limite difícil de 50.000 permissões exclusivas que pode ser Definido por lista e se sua organização é de qualquer tamanho significativo ou (mais provável) vê o volume de negócios significativo, então você acertará esse limite. Criando uma solução automatizada para criar segurança no nível do item garantirá que você pressione esse limite ainda mais rápido.

A segurança mais complicada é, o desempenho geral mais lento do site se torna, a indexação de pesquisa também é desacelerada e tentativa de gerenciar a segurança em tal cenário é o material de pesadelos.

IT pode ser feito (como waqas apontou), mas se isso realmente é o requisito, é possível que o SharePoint não seja a melhor ferramenta para realizar o que você está tentando fazer.

Se você estiver preso na terra do SharePoint para isso, então você teria que criar algum tipo de front-end personalizado que usasse consultas de caml personalizadas para chamar os dados de back-end. Ah, e desligue a indexação das listas específicas nas configurações da lista para que eles não possam ser encontrados em um simples rastreamento.

O código JS a seguir fornece uma contagem de palavras de 67. O OpenOffice fornece o mesmo número.

str = "I need to count words in a string using PHP or Javascript (preferably PHP). The problem is that the counting needs to be the same as it works in Microsoft Word, because that is where the people assemble their original texts in so that is their reference frame. PHP has a word counting function (http://php.net/manual/en/function.str-word-count.php) but that is not 100% the same as far as I know.";

wordCount = str.split(/\s+/g).length;
function countWords( $text )
{
    $text = preg_replace('![^ \pL\pN\s]+!u', '', strtolower($text));
    $text = trim( preg_replace('![ \s]+!u', ' ', $text) );

    $count = count( explode(' ', $text) );

    return $count;
}

você pode usar este código para contagem de palavras

<title>Untitled Document</title>
<script type="text/javascript" src="mootools.svn.js"></script>
<script type="text/javascript">
    window.addEvent('domready', function()
    {   
        $('myInput').addEvent('keyup', function() 
        {
            max_chars = 0;
            current_value   = $('myInput').value;
            current_length  = current_value.length;
            remaining_chars = max_chars+current_length;
            $('counter_number').innerHTML = remaining_chars;
            if(remaining_chars<=5)
            {
                $('counter_number').setStyle('color', '#990000');
            } else {
                $('counter_number').setStyle('color', '#666666');       
            }   
        }); 
    }); 
</script>

<style type="text/css"> 
    body{
        font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif; 
        font-size:12px;
        color:#000000; 
    }
    a:link, a:visited{color:#0066CC;}
    label{display:block;}
    .counter{
        font-family:Georgia, "Times New Roman", Times, serif;
        font-size:16px; 
        font-weight:bold;
        color:#666666
    } 
</style> 
</head>
<body> 
    <label for="myInput">Write something here:</label> 
    <input type="text" id="myInput" maxlength="20" />  
    <span id="counter_number" class="counter">20</span> 
    Remaining chars

e baixe a biblioteca Mootools ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top