Вопрос

Мне нужно посчитать слова в строке, используя PHP или JavaScript (предпочтительно PHP). Проблема в том, что подсчет должен быть таким же, как и в Microsoft Word, потому что именно здесь люди собирают свои оригинальные тексты, так что это их эталонный кадр. PHP имеет функцию подсчета слов (http://php.net/manual/en/function.str-word-count.php), но это не на 100%, насколько я знаю.

Есть указатели?

Это было полезно?

Решение

Реальная проблема здесь заключается в том, что вы пытаетесь разработать решение, не понимая точных требований. Это не проблема кодирования, как проблема со спецификациями.

Суть проблемы в том, что ваш Алгоритм подсчета слов отличается от Слово Алгоритм подсчета слов-потенциально по уважительной причине, поскольку существуют различные краевые сведения, которые следует учитывать без очевидных ответов. Таким образом, вашим вопросом действительно должен быть «какой алгоритм использует слово для расчета количества слов?» И если вы немного подумаете об этом, вы уже знаете ответ-это проприетарное программное обеспечение с закрытым исходным кодом, чтобы никто не мог знать наверняка. И даже если вы делать Выполните это, это не публичный интерфейс, поэтому его можно легко изменить в следующей версии.

По сути, я думаю, что это в основном плохая идея для разработки вашего программного обеспечения, чтобы оно функционировало то же самое, что вы не можете полностью понять. Лично я бы сосредоточился на том, чтобы просто разработать собственное соблюдение слов, документирование алгоритма, стоящего за ним и оправдывая, почему это разумный метод подсчета слов (указывая на то, что нет единого истинного способа).

если ты должен Соответствует попытке Word по какой-то близорукому бизнес-причине, тогда задача номер один состоит в том, чтобы выяснить, какую методологию они используют до такой степени, что вы можете записать алгоритм на бумаге. Но это будет нелегко, будет очень трудно полностью проверить и может измениться без предварительного уведомления ...:/

Другие советы

SharePoint имеет a Жесткий лимит 50 000 уникальных разрешений , которые могут быть Определяется в списке, и если ваша организация имеет любой значительный размер или (скорее всего) видит значительный оборот, то вы получите этот предел. Создание автоматизированного решения для создания безопасности уровня элемента обеспечит ударению этого предела еще быстрее.

Более сложная безопасность - более сложный общий производительность сайта становится, индексирование для поиска также замедляется и пытается управлять безопасностью в таком сценарии - это материал кошмаров.

Это может быть сделано (как указывало WAQS), но если это действительно это требование, то возможно, что SharePoint не является лучшим инструментом для достижения того, что вы пытаетесь сделать.

Если вы застряли в SharePoint-Land для этого, то вам придется создать какой-то пользовательский передний конец, который использовал пользовательские запросы CAML, чтобы вызвать данные заднего конца. Ох, и отключите индексацию определенных списков в настройках списка, чтобы их нельзя найти в простом ползе.

Следующий код JS дает количество слов 67. OpenOffice дает такое же число.

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

Вы можете использовать этот код для количества слов

<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

и скачать библиотеку Mootools ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top