كيف استطيع تحويل الهاشتاغات لروابط في php ؟

كيف استطيع تحويل الهاشتاغات لروابط في php ؟

المشكلة كالتالي

لدي متغير به مقالة بتنسيق html و به مجموعة من الهاشتاغات المكتوبة بعدة لغات (احرف - رموز - ارقام - مثال : #ma_محمد_125_%)

الآن كيف استطيع تحويل هذه الهاشتاغات لروابط دون الاضرار بالروابط الموجودة اصلا في المقال ؟

مع تحياتي

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

يمكن إستخدام أحد مكتبات الـ DOM لهذا الغرض أو عبر الـ regular expression

هذه محاولة لتجاهل عمل روابط للهاش المتواجد داخل رابط -ربما هناك حلول أفضل ولكن هذا ما إستحضرته الآن-

$str = '';
preg_match_all('/<a.*?<\/a>/s', $str, $matchs);
$count = 0;
foreach($matchs[0] as $value){
    $str = str_replace($value, "~~~ignorlink$count~~~", $str);
    ++$count;
}
$str = preg_replace('/(\#.*?[ \s\t\n<>])/s', "<a href=\"$1\">$1</a>", $str);

$count = 0;
foreach($matchs[0] as $value){
    $str = str_replace("~~~ignorlink$count~~~", $value, $str);
    ++$count;
}
echo $str;

هذا يمكن ان يساعد

فكرة الكود جميلة

شكرا للرد

تعلم regular expression وستقوم بالمهمة:

روابط مفيدة

أتمنى لك التوفيق

كما قال abosami2000 تعلم ريجيكس،

هذا الكود للمساعدة :

#(.+?)(?=[\s.,:,]|$)
mjxp7 أضف ردا

المشكلة في استثناء الروابط من الاستبدال

مثلا اذا كانت قيمة المتغير هي

 <a href="sss">aa #aaa</a> #bbb

سيعتبر عنوان الرابط ايضا هاشتاغ

يبدو ان الامر معقد

على كل حال شكرا للرد

thisisyusuf أضف ردا

أنا استخدم VB.NET وASP.NET

ولكن قد يكون هناك أمور مشتركة خاصة في ما يتعلق باللغة العربية

هذا الـ regular expression وهو يدعم اللغة العربية حصلت عليها بعد تجارب

          Dim rx As New Regex("(#)((?:[ء-يA-Za-z0-9-_]*))", RegexOptions.Compiled Or RegexOptions.IgnoreCase)

بالتوفيق