الفرق بين المراجعتين ل"PHP/similar text"

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
(إضافة عنوان الصفحة والتصنيفات)
 
سطر 2: سطر 2:
 
(PHP 4, PHP 5, PHP 7)
 
(PHP 4, PHP 5, PHP 7)
  
تحسب الدالة similar_text()‎ عدد الأحرف المتشابهة في سلسلتين نصيتين.
+
تحسب الدالة <code>similar_text()‎</code> عدد الأحرف المتشابهة في سلسلتين نصيتين.
  
 
== الوصف ==
 
== الوصف ==
 
<syntaxhighlight lang="php">
 
<syntaxhighlight lang="php">
 
int similar_text ( string $first , string $second [, float &$percent ] )
 
int similar_text ( string $first , string $second [, float &$percent ] )
</syntaxhighlight>تحسب الدالة similar_text()‎ نسبة التشابه بين سلسلتين كما هو مذكور في كتاب Programming Classics: Implementing the World's Best Algorithms by Oliver‏ (<nowiki>ISBN 0-131-00413-1</nowiki>). لاحظ أن هذا التنفيذ لا يَستخدِم مكدسًا (stack) كما في الشفرة التي ذكرها المؤلف في كتابه، ولكن تجري استدعاءات تكرارية (recursive calls) مما قد يساهم أو قد لا يساهم في تسريع العملية بأكملها. لاحظ أيضًا أن تعقيد هذه الخوارزمية هو O(N**3)‎ حيث N هو طول أطول سلسلة نصية.
+
</syntaxhighlight>تحسب الدالة <code>similar_text()‎</code> نسبة التشابه بين سلسلتين كما هو مذكور في كتاب Programming Classics: Implementing the World's Best Algorithms by Oliver‏ (<nowiki>ISBN 0-131-00413-1</nowiki>). لاحظ أن هذا التنفيذ لا يَستخدِم مكدسًا (stack) كما في الشفرة التي ذكرها المؤلف في كتابه، ولكن تجري استدعاءات تكرارية (recursive calls) مما قد يساهم أو قد لا يساهم في تسريع العملية بأكملها. لاحظ أيضًا أن تعقيد هذه الخوارزمية هو O(N**3)‎ حيث N هو طول أطول سلسلة نصية.
  
 
== المعاملات ==
 
== المعاملات ==
  
=== first ===
+
=== <code>first</code> ===
 
السلسلة النصية الأولى.
 
السلسلة النصية الأولى.
  
=== second ===
+
=== <code>second</code> ===
 
السلسلة النصية الثانية.
 
السلسلة النصية الثانية.
  
 
ملاحظة: قد يؤدي تبديل السلسلة الأولى بالثانية أو العكس إلى تغيرٍ في النتيجة (نسبة التشابه). انظر المثال أدناه.
 
ملاحظة: قد يؤدي تبديل السلسلة الأولى بالثانية أو العكس إلى تغيرٍ في النتيجة (نسبة التشابه). انظر المثال أدناه.
  
=== percent ===
+
=== <code>percent</code> ===
بتمرير مرجع (reference) كوسيط ثالث، فستحسب الدالة similar_text()‎ التشابه في النسبة المئوية بقسمة النتيجة على متوسط أطوال السلسلتين المعطيَين مضروبًا (أي المتوسط) بالعدد 100.
+
بتمرير [[PHP/references|مرجع]] (reference) كوسيط ثالث، فستحسب الدالة <code>similar_text()‎</code> التشابه في النسبة المئوية بقسمة النتيجة على متوسط أطوال السلسلتين المعطيَين مضروبًا (أي المتوسط) بالعدد 100.
  
 
== القيم المعادة ==
 
== القيم المعادة ==
تعيد الدالة similar_text()‎ عدد المحارف المتطابقة في السلسلتين المدخلتين.
+
تعيد الدالة <code>similar_text()‎</code> عدد المحارف المتطابقة في السلسلتين المدخلتين.
  
 
يُحسب عدد المحارف المتطابقة بالعثور على أطول سلسلة فرعية مشتركة، ثم إعادة إجراء هذه العملية للسلسلة النصية التي تسبق السلسلة النصية الفرعية المشتركة والتي تليها تكراريًا (recursively). ثم ستُجمَع أطوال جميع الأجزاء الفرعية المشتركة.
 
يُحسب عدد المحارف المتطابقة بالعثور على أطول سلسلة فرعية مشتركة، ثم إعادة إجراء هذه العملية للسلسلة النصية التي تسبق السلسلة النصية الفرعية المشتركة والتي تليها تكراريًا (recursively). ثم ستُجمَع أطوال جميع الأجزاء الفرعية المشتركة.
  
 
== أمثلة ==
 
== أمثلة ==
المثال 1: مثال على تبديل معاملات الدالة similar_text()‎
+
المثال 1: مثال على تبديل معاملات الدالة <code>similar_text()‎</code>
  
يُظهِرُ المثال الآتي تبديل المعامل first والمعامل second وتأثير ذلك على النتيجة:<syntaxhighlight lang="php">
+
يُظهِرُ المثال الآتي تبديل المعامل <code>first</code> والمعامل <code>second</code> وتأثير ذلك على النتيجة:<syntaxhighlight lang="php">
 
<?php
 
<?php
 
 
$sim = similar_text('bafoobar', 'barfoo', $perc);
 
$sim = similar_text('bafoobar', 'barfoo', $perc);
 
 
echo "similarity: $sim ($perc %)\n";
 
echo "similarity: $sim ($perc %)\n";
  
 
$sim = similar_text('barfoo', 'bafoobar', $perc);
 
$sim = similar_text('barfoo', 'bafoobar', $perc);
 
 
echo "similarity: $sim ($perc %)\n";
 
echo "similarity: $sim ($perc %)\n";
</syntaxhighlight>تكون نتيجة المثال السابق كالآتي:<syntaxhighlight lang="php">
+
</syntaxhighlight>تكون نتيجة المثال السابق كالآتي:<syntaxhighlight lang="text">
 
similarity: 5 (71.428571428571 %)
 
similarity: 5 (71.428571428571 %)
 
 
similarity: 3 (42.857142857143 %)
 
similarity: 3 (42.857142857143 %)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== انظر أيضًا ==
 
== انظر أيضًا ==
* الدالة levenshtein()‎: حساب مسافة Levenshtein بين سلسلتين.
+
* الدالة <code>[[PHP/levenshtein|levenshtein()‎]]</code>: حساب مسافة Levenshtein بين سلسلتين.
* الدالة soundex()‎: حساب مفتاح soundex لسلسلة.
+
* الدالة <code>[[PHP/soundex|soundex()‎]]</code>: حساب مفتاح soundex لسلسلة.
  
 
== مصادر ==
 
== مصادر ==

المراجعة الحالية بتاريخ 11:53، 9 أبريل 2018

(PHP 4, PHP 5, PHP 7)

تحسب الدالة similar_text()‎ عدد الأحرف المتشابهة في سلسلتين نصيتين.

الوصف

int similar_text ( string $first , string $second [, float &$percent ] )

تحسب الدالة similar_text()‎ نسبة التشابه بين سلسلتين كما هو مذكور في كتاب Programming Classics: Implementing the World's Best Algorithms by Oliver‏ (ISBN 0-131-00413-1). لاحظ أن هذا التنفيذ لا يَستخدِم مكدسًا (stack) كما في الشفرة التي ذكرها المؤلف في كتابه، ولكن تجري استدعاءات تكرارية (recursive calls) مما قد يساهم أو قد لا يساهم في تسريع العملية بأكملها. لاحظ أيضًا أن تعقيد هذه الخوارزمية هو O(N**3)‎ حيث N هو طول أطول سلسلة نصية.

المعاملات

first

السلسلة النصية الأولى.

second

السلسلة النصية الثانية.

ملاحظة: قد يؤدي تبديل السلسلة الأولى بالثانية أو العكس إلى تغيرٍ في النتيجة (نسبة التشابه). انظر المثال أدناه.

percent

بتمرير مرجع (reference) كوسيط ثالث، فستحسب الدالة similar_text()‎ التشابه في النسبة المئوية بقسمة النتيجة على متوسط أطوال السلسلتين المعطيَين مضروبًا (أي المتوسط) بالعدد 100.

القيم المعادة

تعيد الدالة similar_text()‎ عدد المحارف المتطابقة في السلسلتين المدخلتين.

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

أمثلة

المثال 1: مثال على تبديل معاملات الدالة similar_text()‎

يُظهِرُ المثال الآتي تبديل المعامل first والمعامل second وتأثير ذلك على النتيجة:

<?php
$sim = similar_text('bafoobar', 'barfoo', $perc);
echo "similarity: $sim ($perc %)\n";

$sim = similar_text('barfoo', 'bafoobar', $perc);
echo "similarity: $sim ($perc %)\n";

تكون نتيجة المثال السابق كالآتي:

similarity: 5 (71.428571428571 %)
similarity: 3 (42.857142857143 %)

انظر أيضًا

  • الدالة levenshtein()‎: حساب مسافة Levenshtein بين سلسلتين.
  • الدالة soundex()‎: حساب مفتاح soundex لسلسلة.

مصادر