نظرة سريعة على مجريات يوم سوالف
الفائزون في المسابقة الأصغر لسوالف كاست

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد
 
LinkBack أدوات الموضوع
عضو نشيط
تاريخ التسجيل: May 2007-
#1 (permalink)  
مساعدة في دالة الاستبدال eregi_replace


السلام عليكم

أريد استخدام دالة eregi_replace لتقنين ادخال الصور بحيت لا يمكن للعضو التحكم بطولها و عرضها عن طريق html

متلا
كود بلغة HTML:
<img border="3" src="image/img.gif" onload=a12.createOn(this)>
أريدها أن تصبح
كود بلغة HTML:
<img src="image/img.gif" >






__________________
a000a.uni.cc
Maximum file size : 2 mb
جميع الامتدادات متاحة بدون استتناء
--------------------
[نقاش] : أساسيات برمجة منتدى
azizsoft غير متواجد حالياً   قديم 12-04-2008, 03:10 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Sep 2006-
#2 (permalink)  

كود PHP:
$tag '<img border="3" src="image/img.gif" onload=a12.createOn(this)>';
preg_match('#src="(.*)"#'$tag$matches);
$tag '<img src="'$matches[1] .'">'
جرب هذا الكود أخي عزيز سوفت ..

وسوف أقوم ببرمجة دالة لتنقيح الـ arrtibutes من وسوم الـ HTML علي طريقة دالة strip_tags ليمكن استخدامها بشكل أكثر عموماً بإذن الله.






التصميم غير متواجد حالياً   قديم 12-04-2008, 04:58 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#3 (permalink)  

شكرا لتفاعلك مع الموضوع

الحل الدي وضعته يقوم بتنقيح الأكواد من أول صورة فقط مع العلم أني اريد استخدام الكود لمنع العضو من التلاعب بجميع الصور الموجودة في مشاركته

لو قام العضو بارسال مشاركة تحتوي على أكتر من صورة فان الكود سيكون فعال على أول صورة فقط


و تحيتي لك






__________________
a000a.uni.cc
Maximum file size : 2 mb
جميع الامتدادات متاحة بدون استتناء
--------------------
[نقاش] : أساسيات برمجة منتدى
azizsoft غير متواجد حالياً   قديم 12-04-2008, 06:56 PM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#4 (permalink)  

الاخ "التصميم" ممكن تشرح لنا لماذا استخدمت ال"#"؟ لم ارها من قبل! هل ممكن تشرح لنا الفائده منها؟






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby متواجد حالياً   قديم 12-04-2008, 08:57 PM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: May 2007-
#5 (permalink)  

الأستاذ hilaby ، شاهدت هذا الرمز من قبل ولم أكن أعرف داعي استخدامه،

بعد قليل من البحث:
اقتباس:
The syntax for patterns used in these functions closely resembles Perl. The expression should be enclosed in the delimiters, a forward slash (/), for example. Any character can be used for delimiter as long as it's not alphanumeric or backslash (\). If the delimiter character has to be used in the expression itself, it needs to be escaped by backslash. Since PHP 4.0.4, you can also use Perl-style (), {}, [], and <> matching delimiters. See Pattern Syntax for detailed explanation.
من مقدمة الموضوع في php.net :
PHP: Introduction - Manual

اقتباس:
For example, if you wanted to search for text surrounded by opening and closing tags like'<TD>SELL</TD>' and replace it with nothing (erase it), you might be tempted to use a regex like this:

<?php
$myNewText
= preg_replace('/<TD>SELL</TD>/', "", $myText
);
?>

This does not work properly. As mentioned in the Introduction at the top of
http://www.php.net/manual/en/ref.pcre.php, if the delimiter appears in the middle of your regular expression, then you must put a \ character before it. So this DOES work:

<?php
$myNewText
= preg_replace('/<TD>SELL<\/TD>/', "", $myText
);
?>

That same Introduction also mentions that you can start and end your expression with characters other than the usual /. Because there are no % characters in the middle of my expression above, I might prefer to use the following:

<?php
$myNewText
= preg_replace('%<TD>SELL</TD>%', "", $myText
);
?>

That also works correctly, and I did not need a \ before the /.


من إحدى التعليقات في المانيوال كذلك ..

زبدة الكلام، يمكن استخدام أي رمز حسب الشروط في الاقتباسين ..

تحياتي، أشرف السمهوري






أشرف السمهوري متواجد حالياً   قديم 12-04-2008, 10:10 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Sep 2006-
#6 (permalink)  
Post

السلام عليكم,

أستاذ خالد ..
كما تفضل أخي أشرف السمهوري بالتوضيح، فإن الـ # مجرد Delimiter قمت باستخدامه مؤخراً بدلاً من الـ / وذلك لأن الـشارب # لا تتواجد كثيرا داخل الباترن بينما السلاش تصادفنا أكثر فنضطر لتهريبها.
هل تري معي أنها أفضل أم أن هناك مشكلة لا أراها؟

بالنسبة للدالة التي وعدتكم بها فقد أنجزتها بعد عمل أكثر من ساعتين وسوف أرفقها هنا لنقوم بتجربتها سوية وتنقيحها من الأخطاء لأني لما أجربها جيداً.

كود PHP:
function stripAttribs($text$allowedAttribs = array())
{
    
preg_match_all('#<(\w+?)[^>]*>#iU'$text$allTags);
    
    for(
$i 0$i count($allTags[0]); $i++)  {
        if(
array_key_exists($allTags[1][$i], $allowedAttribs))
        {
            
$pattern str_replace(
                array(
', '','),
                
'=["\']??[^"\'\s]+?["\']??|',
                
$allowedAttribs[$allTags[1][$i]]
            ) . 
'=["\']??[^"\'\s]+?["\']??';
            
preg_match_all("#$pattern#iU"$allTags[0][$i], $matches);
            
$strippedTag '<' $allTags[1][$i] . ' ' implode(' '$matches[0]) . '>';
            
$text str_replace($allTags[0][$i], $strippedTag$text);
        }
        else
        {
            
$strippedTag '<' $allTags[1][$i] . '>';
            
$text str_replace($allTags[0][$i], $strippedTag$text);
        }
    }
    return 
$text;

مثال علي استخدام الدالة
كود PHP:
$string '<font color="#00ff00"><a href="hello.php" id="welcome" onclick="jsFunc();">Hello</a></font>';

$string stripAttribs($string, array('a' => 'href')); 
حيث البارامتر الأول هو النص المراد تنقيحه
والبارمتر الثاني هو الـ Attributes المسموح بتواجدها داخل وسوم الـ HTML. بمعني أننا سنترك هذه الوسوم ولن نحذفها.
والبارمتر عبارة عن مصفوفة لكل عنصر فيها :
- مفتاح: اسم وسم الـ html
- قيمة : الـ Arrtibutes المسموحة له مفصول بينها ب comma مثل "href,id"

وما دون ذلك من وسوم HTML غير مذكورة في المصفوفة يتم حذف أي بارمتر ممرر لها.

------------------------
بالنسبة لمشكلتك أخي عزيز سوفت, علي افتراض أنك تريد تمرير وسوم الصور فقط متواجداً فيها src attribute فقط
كود PHP:
$text stripAttribs(strip_tags($text'<img>'), array('img' => 'src')); 
أرجو أن أكون قد أفدتكم







التعديل الأخير تم بواسطة : التصميم بتاريخ 13-04-2008 الساعة 12:21 AM. سبب آخر: تعديل في الدالة + توضيح للشرح
التصميم غير متواجد حالياً   قديم 13-04-2008, 12:05 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#7 (permalink)  

و الله الدالة رائعة جدا و هي ما كنت أبحث عنه بالضبط
لكن تواجهني بها مشكلة غريبة جدا :

ادا كان النص الموجه الى الدالة قادم من مصفوفة $_POST لا تعمل






__________________
a000a.uni.cc
Maximum file size : 2 mb
جميع الامتدادات متاحة بدون استتناء
--------------------
[نقاش] : أساسيات برمجة منتدى
azizsoft غير متواجد حالياً   قديم 13-04-2008, 02:04 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#8 (permalink)  

النتيجة تكون
كود بلغة HTML:
<img src=\">






__________________
a000a.uni.cc
Maximum file size : 2 mb
جميع الامتدادات متاحة بدون استتناء
--------------------
[نقاش] : أساسيات برمجة منتدى
azizsoft غير متواجد حالياً   قديم 13-04-2008, 02:10 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Sep 2006-
#9 (permalink)  

اقتباس:
و الله الدالة رائعة جدا و هي ما كنت أبحث عنه بالضبط
أي خدمة

اقتباس:
لكن تواجهني بها مشكلة غريبة جدا :

ادا كان النص الموجه الى الدالة قادم من مصفوفة $_POST لا تعمل
أنا جربتها حالاً والنتيجة مظبوطة






التصميم غير متواجد حالياً   قديم 13-04-2008, 02:13 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#10 (permalink)  

ما شاء الله عليك أخي التصميم
تم حل المشكلة عن طريق هده الدالة و أسأل الله أن يجعلها في ميزان حسناتك


كود PHP:
$string stripslashes($_POST['html']);
$string stripAttribs($string, array('img' => 'src''a' => 'href'));
echo 
$string






__________________
a000a.uni.cc
Maximum file size : 2 mb
جميع الامتدادات متاحة بدون استتناء
--------------------
[نقاش] : أساسيات برمجة منتدى
azizsoft غير متواجد حالياً   قديم 13-04-2008, 02:19 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#11 (permalink)  

تبقى أن نعرف كيف نسمح بأكثر من كود arrtibutes داخل الوسم
متل
كود بلغة HTML:
<font size="4" color="#FF0000">text</font>






__________________
a000a.uni.cc
Maximum file size : 2 mb
جميع الامتدادات متاحة بدون استتناء
--------------------
[نقاش] : أساسيات برمجة منتدى
azizsoft غير متواجد حالياً   قديم 13-04-2008, 02:23 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Sep 2006-
#12 (permalink)  

أعتقد المشكلة عندك في الـ Magic_quotes .. المفروض تكون off

بالنسبة للسماح بأكثر من attribute أنا قولتها في شرح الدالة فوق. بس مش مشكلة نقول كمان

كود PHP:
$string stripAttribs($string, array('font' => 'size,color')); 






التصميم غير متواجد حالياً   قديم 13-04-2008, 02:28 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#13 (permalink)  

كفيت و وفيت
وجزاك الله عنا خير جزاء






__________________
a000a.uni.cc
Maximum file size : 2 mb
جميع الامتدادات متاحة بدون استتناء
--------------------
[نقاش] : أساسيات برمجة منتدى
azizsoft غير متواجد حالياً   قديم 13-04-2008, 03:06 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#14 (permalink)  

جزاك الله خير الجزاء هذه الدالة فادتني جدا في مشروع اقوم به الان

بيض الله وجهك






__________________
اللهم صل علي سيدنا محمد وعلي آل سيدنا محمد وصحبه وسلم
ابوطارق غير متواجد حالياً   قديم 13-04-2008, 12:21 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Sep 2006-
#15 (permalink)  

جزانا الله واياكم

قمت بتطوير الدالة وتجدون الدالة المطورة في هذا الموضوع
http://www.swalif.net/softs/swalif45/softs225318/






التصميم غير متواجد حالياً   قديم 14-04-2008, 01:27 AM
رد مع اقتباس
رد


أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
مساعدة في دالة حسابية .. أبو خلود PHP 2 17-03-2008 12:13 PM
مساعدة و استفسار حول دالة ( )exec byassir PHP 5 27-12-2007 09:06 PM
مساعدة بخصوص دالة header() azizsoft PHP 4 30-10-2007 12:43 AM
طلب مساعدة فى دالة IF >> Medo Hard << PHP 11 02-12-2006 01:19 AM
الاصدار 1.1.2 من برنامج منتديات MySmartBB MaaSTaaR إصلاح وصيانة المنتديات 51 27-01-2006 02:49 PM


الساعة الآن: 12:03 AM بتوقيت المملكة العربية السعودية