سؤال

أحتاج إلى حساب الكلمات في سلسلة باستخدام PHP أو JavaScript (ويفضل PHP). المشكلة هي أن العد يجب أن يكون هو نفسه كما يعمل في Microsoft Word ، لأن هذا هو المكان الذي يقوم فيه الناس بتجميع نصوصهم الأصلية في إطارهم المرجعي. PHP لديه وظيفة عد الكلمات (http://php.net/manual/en/function.str-word-count.php) لكن هذا ليس 100 ٪ كما أعرف.

أي مؤشرات؟

هل كانت مفيدة؟

المحلول

المشكلة الحقيقية هنا هي أنك تحاول تطوير حل دون فهم المتطلبات الدقيقة حقًا. هذه ليست مشكلة ترميز بقدر مشكلة في المواصفات.

جوهر القضية هو ذلك لك تختلف خوارزمية قرص الكلمات كلمات خوارزمية قرص الكلمات-من المحتمل أن تكون لسبب وجيه ، نظرًا لوجود العديد من حالات الحافة التي يجب مراعاتها دون أي إجابات واضحة. وبالتالي ، يجب أن يكون سؤالك حقًا "ما هي الخوارزمية التي تستخدمها الكلمة لحساب عدد الكلمات؟" وإذا كنت تفكر في هذا الأمر قليلاً ، فأنت تعرف بالفعل الإجابة-إنه برنامج خاص بالمصدر ، لذلك لا يمكن لأحد أن يعرف بالتأكيد. وحتى لو كنت فعل العمل خارجها ، هذه ليست واجهة عامة بحيث يمكن تغييرها بسهولة في الإصدار التالي.

في الأساس ، أعتقد أنها فكرة سيئة في الأساس لتصميم برنامجك بحيث يعمل بشكل متماثل لشيء لا يمكنك فهمه تمامًا. أنا شخصياً أركز على مجرد تطوير كلمة عاقلة خاصة بك ، توثيق الخوارزمية وراءها وتبرير لماذا هو مسؤول طريقة حساب الكلمات (تشير إلى أنه لا توجد طريقة حقيقية واحدة).

اذا أنت يجب تتوافق مع محاولة Word لسبب تجاري قصير النظر ، فإن المهمة الأولى هي تحديد المنهجية التي يستخدمونها إلى النقطة التي يمكنك فيها كتابة خوارزمية على الورق. لكن هذا لن يكون سهلاً ، سيكون من الصعب للغاية التحقق تمامًا من التغيير دون إشعار ...:-/

نصائح أخرى

SharePoint لديه الحد الصعب من 50000 أذونات فريدة يمكن أن يكون محددة لكل قائمة وإذا كانت مؤسستك من أي حجم مهم أو (أكثر عرضة) يرى دوران كبير، فستضرب هذا الحد. إن إنشاء حل آلي لإنشاء أمان على مستوى العنصر سيضمن لك ضرب هذا الحد بشكل أسرع.

الأمن الأكثر تعقيدا هو، يصبح أداء المواقع الإجمالي الأبطأ، يتم إبطال فهرسة البحث أيضا ومحاولة إدارة الأمان في مثل هذا السيناريو هو أشياء الكوابيس.

it يمكن القيام به (كما أشارت وقاعات) ولكن إذا كان هذا هو المطلب حقا، فمن الممكن أن تكون 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

وتنزيل مكتبة موتولز ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top