السلام عليكم ورحمة الله وبركاته ..
فكرة المقارنة حسب البرامج المنشأة ليست طريقة صحيحة ! حيث أن سرعة **البرنامج** أو جودته أو مدى تحمله لا تعتمد على اللغة *وحدها* ، بل على المبرمج أيضاً ، يجب أن تكون المقارنة في الخصائص والدوال نفسها ، وهذا مافعلته وأفعله الآن ...
دوال إدارة النصوص :
-------------------
*php*:
تقدم php دوال كثيرة وقوية ، أهم هذه الأدوات تعرف بأدوات Regular Expressions ، وهي تشمل أوامر موروثة من لغة Perl إضافة إلى أوامر النظام POSIX.
تتيح لك Regular Expressions أن تقوم بعمليات بحث (و/أو) إستبدال على مستوى النصوص ، أي أنك تبحث عن نص داخل نص آخر ، أو تستبدل نص بنص آخر .. وهكذا .. ولكنها تتيح لك تحديد أدق أدق أدق التفاصيل ، مثل (للتمثيل لا الحصر):
* تحديد موضع النص المراد العثور عليه ، هل هو في بداية النص الأصلي أم نهايته أم بعد خانتين ، ثلاث ...
* تحديد نوعية النص المراد العثور عليه ، هل هو رقم أم أحرف صغيرة أم أحرف كبيرة أم مشكل ...
* تحديد عدد مرات ظهور النص المراد العثور عليه ، هل يظهر مرة واحدة أو لا يظهر إطلاقاً ؟ أم يظهر عدد محدد من المرات ؟ أم له الحرية في الظهور عدد المرات التي يريدها 
وغيرها الكثير من الخصائص المتقدمة ، وأيضاً نفس هذه الخصائص تنطبق على الإستبدال ، وليس العثور على النص فقط !
والصيغة كالتالي (دالة واحدة من مجموعة الدوال):
كود:
ereg (pattern, string [, regs])
أود الإشارة إلى أنه بإمكانك إستخلاص جزء من النص ووضعه في عناصر مصفوفة تحددها في الخانة الثالثة لهذه الدالة ، فمثلاً لو أردت معرفة النص الخامس الذي تنطبق عليه الخصائص التي حددتها ، ستجدها في
$regs[5]
وهكذا
*asp*:
تقدم asp دوال جيدة لإدارة النصوص ، ولكنها **أبداً** ليست بمستوى Regular Expressions ، حيث الأوامر الخاصة بالنصوص في asp لا تصل إلى ذلك الحد من القوة ، فمعظمها أوامر لإستخلاص النصوص من الخانة رقم كذا إلى الخانة رقم كذا *بصفة عامة* ، وأيضاً لديها دوال للبحث والإستبدال وهذه الوظائف لا تأخذ أية خصائص إضافية ، النص فقط !
-------------------
مثال حي :
لدينا نص "mohammad salem" ونريد تحويل بداية كل إسم فيه إلى حروف كبيرة Capital Letter ، سنفعل التالي:
كود:
Code In PHP
<?php
$name = ucwords("mohammad salem");
?>
Code In ASP
<%
Function Proper(txtName)
Dim txtRest, txtTmp, intSpcPos
txtRest = LCase(txtName)
intSpcPos = InStr(1, txtRest, " ")
Do While intSpcPos <> 0
txtTmp = txtTmp & UCase(Left(txtRest, 1)) & Mid(txtRest, 2,(intSpcPos - 1))
txtRest = Mid(txtRest, intSpcPos + 1, Len(txtRest))
intSpcPos = InStr(1, txtRest, " ")
Loop
Proper = txtTmp & UCase(Left(txtRest, 1)) & Mid(txtRest, 2,Len(txtRest))
End Function
name = Proper("mohammad salem")
%>
والآن ، مارأيكم
؟ هل هناك فرق بينهما !! هذا في أبسط الأمور ، تحويل الأحرف إلى كبيرة ، فما رأيكم بأوامر البحث والإستبدال المعقدة ... الخيار لكم !