اذهب إلى المحتوى

السؤال

نشر

أريد تضمين خاصية تتيح للمستخدم البحث عن نص داخل قطعة نصية أخرى، فمثلا أريد البحث عن النص التالي:

DateAmountDescription 
24-01-2016$ 14,99Spotify 
23-01-2016$ 10,50Netflix
23-01-2016$ 5,50Amazon

وقد وجدت هذا الكود الخاص بمقارنة نصين:

foreach ($keywords as $keyword) 
{
    $pos = strpos($text, $keyword);

    if ($pos === false) {

    } else {
        echo "The string '$keyword' was found in the string.";
        echo " and exists at position $pos<br>";
    }
}

لكن أحصل على رسالة الخطأ التالية:

The string Spotify was found in the string. and exists at position 39.

كيف لي بحل هذا المشكل؟

Recommended Posts

  • 0
نشر

عليك باستعمال regex  كحل :

<?php

$string = "DateAmountDescription 
24-01-2016$ 14,99Spotify 
23-01-2016$ 10,50Netflix
23-01-2016$ 5,50Amazon";

$regex = '~(?<amount>[\d,.]+)(?<provider>Spotify|Netflix|Amazon)\s*$~m';
preg_match_all($regex, $string, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
    echo "Found: " . $match["provider"] . " with amount: " . $match["amount"] . "\n";
}
?>

وذلك بالبحث داخل المتغير string$ على عدة كلمات يتم تمريرها عبر دالة foreach، وطباعة رسالة تنبه على وجود الكلمة، كما هو مبين داخل الكود.

مثال تطبيقي.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...