# PHP Regular Expressions Regex

ওয়েব ডেভেলপমেন্টে ডাটা ম্যানেজমেন্ট এবং টেক্সট প্রসেসিং একটি গুরুত্বপূর্ণ বিষয়। অনেক সময় আমাদের টেক্সট থেকে নির্দিষ্ট ডাটা খুঁজে বের করতে হয়, যেমন ইমেইল ভ্যালিডেশন, ফোন নাম্বার যাচাই, বা কোনো নির্দিষ্ট প্যাটার্ন অনুযায়ী স্ট্রিং ফিল্টার করা। এই কাজগুলো করতে **Regular Expressions (Regex)** খুবই শক্তিশালী একটি টুল।

PHP-তে আমরা **PCRE (Perl Compatible Regular Expressions)** ব্যবহার করি, যা `preg_` ফাংশনের মাধ্যমে কাজ করে।

---

## Regular Expression কী?

**Regular Expression (Regex)** হলো কিছু বিশেষ ধরণের প্যাটার্ন বা নিয়ম, যার মাধ্যমে আমরা টেক্সট সার্চ, ম্যাচ, বা রিপ্লেস করতে পারি।  
উদাহরণ:

* শুধুমাত্র সংখ্যা খুঁজে পাওয়া → `[0-9]`
    
* শুধুমাত্র অক্ষর খুঁজে পাওয়া → `[a-zA-Z]`
    
* ইমেইল ভ্যালিডেশন → `/^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$/`
    

---

## PHP Regex Functions

PHP-তে Regex কাজ করার জন্য কয়েকটি গুরুত্বপূর্ণ ফাংশন আছে:

### 1\. **preg\_match()**

এই ফাংশনটি দিয়ে কোনো স্ট্রিং-এ নির্দিষ্ট প্যাটার্ন আছে কিনা চেক করা যায়।

```plaintext
<?php
    $pattern = "/php/";
    $text = "I love php programming.";
    
    if (preg_match($pattern, $text)) {
        echo "প্যাটার্ন পাওয়া গেছে!";
    } else {
        echo "প্যাটার্ন পাওয়া যায়নি!";
    }
?>
```

**আউটপুট:**

```plaintext
প্যাটার্ন পাওয়া গেছে!
```

---

### 2\. **preg\_match\_all()**

এটি সবগুলো ম্যাচ খুঁজে বের করে।

```plaintext
<?php
    $pattern = "/\d+/";  // সংখ্যা খুঁজবে
    $text = "আমার 2 টি কলম এবং 5 টি খাতা আছে।";
    
    preg_match_all($pattern, $text, $matches);
    print_r($matches);
?>
```

**আউটপুট:**

```plaintext
Array
(
    [0] => Array
        (
            [0] => 2
            [1] => 5
        )
)
```

---

### 3\. **preg\_replace()**

Regex ব্যবহার করে টেক্সট রিপ্লেস করা হয়।

```plaintext
<?php
    $pattern = "/Java/";
    $replace = "PHP";
    $text = "I love Java and Java is powerful.";
    
    $result = preg_replace($pattern, $replace, $text);
    echo $result;
?>
```

**আউটপুট:**

```plaintext
I love PHP and PHP is powerful.
```

---

### 4\. **preg\_split()**

Regex দিয়ে টেক্সটকে ভাগ করা হয়।

```plaintext
<?php
    $pattern = "/\s+/";  // স্পেস অনুযায়ী ভাগ হবে
    $text = "PHP is a powerful language";
    
    $result = preg_split($pattern, $text);
    print_r($result);
?>
```

**আউটপুট:**

```plaintext
Array
(
    [0] => PHP
    [1] => is
    [2] => a
    [3] => powerful
    [4] => language
)
```

---

## কিছু সাধারণ Regex Pattern

| প্যাটার্ন | কাজ |
| --- | --- |
| `.` | যেকোনো একটি ক্যারেক্টার |
| `\d` | সংখ্যা (0-9) |
| `\D` | সংখ্যা বাদে সবকিছু |
| `\w` | অক্ষর, সংখ্যা ও `_` |
| `\s` | স্পেস |
| `^` | স্ট্রিং-এর শুরু |
| `$` | স্ট্রিং-এর শেষ |
| `+` | এক বা একাধিক রিপিট |
| `*` | শূন্য বা একাধিক রিপিট |
| `{n}` | n বার রিপিট |
| `{n,m}` | n থেকে m বার রিপিট |

---

## উদাহরণ: ইমেইল ভ্যালিডেশন

```plaintext
<?php
    $email = "example@test.com";
    $pattern = "/^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$/";
    
    if (preg_match($pattern, $email)) {
        echo "সঠিক ইমেইল!";
    } else {
        echo "ভুল ইমেইল!";
    }
?>
```

**আউটপুট:**

```plaintext
সঠিক ইমেইল!
```

PHP-তে Regular Expressions (Regex) হলো টেক্সট প্রসেসিংয়ের জন্য একটি শক্তিশালী টুল। এর মাধ্যমে আমরা ডাটা খুঁজে বের করতে, যাচাই করতে এবং পরিবর্তন করতে পারি। ইমেইল ভ্যালিডেশন, ফর্ম ইনপুট চেক, টেক্সট রিপ্লেসমেন্ট—সবক্ষেত্রেই Regex ব্যবহার করা হয়।
