Domanda

Devo contare le parole in una stringa usando PHP o JavaScript (preferibilmente PHP). Il problema è che il conteggio deve essere lo stesso di Microsoft Word, perché è qui che le persone assemblano i loro testi originali in modo che sia il loro frame di riferimento. PHP ha una funzione di conteggio delle parole (http://php.net/manual/en/function.str-word-cor.php) ma questo non è al 100% uguale per quanto ne so.

Qualche puntatore?

È stato utile?

Soluzione

Il vero problema qui è che stai cercando di sviluppare una soluzione senza comprendere veramente i requisiti esatti. Questo non è un problema di codifica tanto quanto un problema con le specifiche.

Il punto cruciale del problema è quello tuo L'algoritmo di conteggio delle parole è diverso da Parole Algoritmo di conteggio delle parole-potenzialmente per una buona ragione, poiché ci sono vari casi da considerare senza risposte ovvie. Quindi la tua domanda dovrebbe essere davvero "Quale algoritmo usa la parola per calcolare il conteggio delle parole?" E se ci pensi per un po ', conosci già la risposta: è un software proprietario a source chiuso in modo che nessuno possa saperlo con certezza. E anche se tu fare Elaboralo, questa non è un'interfaccia pubblica, quindi può essere facilmente modificata nella versione successiva.

Fondamentalmente, penso che sia fondamentalmente una cattiva idea progettare il tuo software in modo che funzioni identicamente a qualcosa che non puoi capire appieno. Personalmente, mi concentrerei solo sullo sviluppo di un tuo sano conteggio di parole, Documentare l'algoritmo dietro di esso e giustificare il motivo per cui è un ragionevole Metodo per contare le parole (sottolineando che non esiste un vero modo).

Se tu dovere Conformarsi al tentativo di Word per una ragione aziendale miope, quindi l'attività numero uno è capire quale metodologia usano al punto in cui è possibile scrivere un algoritmo sulla carta. Ma questo non sarà facile, sarà molto difficile da verificare completamente ed è soggetto a cambiare senza preavviso ...:-/

Altri suggerimenti

SharePoint ha un limite rigido di 50.000 autorizzazioni uniche che può essere definito per lista e se la tua organizzazione è di dimensioni significative o (più probabile) vede un significativo fatturato, allora colpirai quel limite. La creazione di una soluzione automatizzata per creare la sicurezza a livello di oggetto garantirà di colpire quel limite ancora più veloce.

La sicurezza più complicata è che la prestazione generale del sito più lento diventa, anche l'indicizzazione della ricerca è rallentata e il tentativo di gestire la sicurezza in un tale scenario è la roba degli incubi.

It può è fatto (come sottolineato Waqas) ma se questo è davvero il requisito, allora è possibile che SharePoint non sia lo strumento migliore per realizzare ciò che stai tentando di fare. Se sei bloccato in SharePoint-Land per questo, dovrai creare una sorta di front-end personalizzato che utilizzava query personalizzate Caml per chiamare i dati del back-end. Oh, e disattivare l'indicizzazione degli elenchi specifici nelle impostazioni dell'elenco in modo che non possano essere trovate in un semplice gattonio.

Il seguente codice JS fornisce un numero di parole di 67. OpenOffice fornisce lo stesso numero.

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

Puoi usare questo codice per il conteggio delle parole

<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 scarica la libreria Mootools ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top