# PHP String Functions Advanced Techniques

PHP প্রোগ্রামিং-এ **string** নিয়ে কাজ করা একটি গুরুত্বপূর্ণ বিষয়। সাধারণ string ফাংশন যেমন `strlen()`, `strtoupper()`, `strtolower()`, `trim()` এগুলো আমরা সবাই ব্যবহার করি। কিন্তু, যখন বড় প্রজেক্টে কাজ করতে হয়, তখন **advanced string functions** জানা অত্যন্ত প্রয়োজন। আজকে আমরা কিছু গুরুত্বপূর্ণ **advanced techniques** দেখব।

---

## 1\. `substr()` এবং `substr_replace()`

### `substr()`

স্ট্রিং-এর নির্দিষ্ট অংশ কেটে আনার জন্য ব্যবহার করা হয়।

```plaintext
<?php
    $text = "Hello World";
    echo substr($text, 0, 5);   // Output: Hello
    echo substr($text, -5);    // Output: World
?>
```

### `substr_replace()`

স্ট্রিং-এর নির্দিষ্ট অংশ রিপ্লেস করার জন্য ব্যবহার করা হয়।

```plaintext
<?php
    $text = "I love Java";
    echo substr_replace($text, "PHP", 7);  
    // Output: I love PHP
?>
```

---

## 2\. `str_replace()` বনাম `preg_replace()`

### `str_replace()`

একটি নির্দিষ্ট টেক্সট রিপ্লেস করার জন্য ব্যবহার হয়।

```plaintext
<?php
    $text = "I like Java, Java is powerful.";
    echo str_replace("Java", "PHP", $text);
    // Output: I like PHP, PHP is powerful.
?>
```

### `preg_replace()`

রেগুলার এক্সপ্রেশন (Regex) ব্যবহার করে আরও শক্তিশালী রিপ্লেসমেন্ট করা যায়।

```plaintext
<?php
    $text = "My phone number is 01712345678.";
    echo preg_replace("/[0-9]/", "*", $text);
    // Output: My phone number is ***********.
?>
```

---

## 3\. `strpos()` এবং `strrpos()`

### `strpos()`

কোনো substring প্রথমবার কোথায় পাওয়া গেছে তার পজিশন দেয়।

```plaintext
<?php
    $text = "I love PHP and PHP is great!";
    echo strpos($text, "PHP");  
    // Output: 7
?>
```

### `strrpos()`

শেষবার কোথায় পাওয়া গেছে তা দেয়।

```plaintext
<?php
    $text = "I love PHP and PHP is great!";
    echo strrpos($text, "PHP");  
    // Output: 15
?>
```

---

## 4\. `explode()` এবং `implode()`

### `explode()`

স্ট্রিংকে ভাগ করে অ্যারেতে রূপান্তর করে।

```plaintext
<?php
    $text = "apple,banana,mango";
    $fruits = explode(",", $text);
    print_r($fruits);
    // Output: Array ( [0] => apple [1] => banana [2] => mango )
?>
```

### `implode()`

অ্যারে থেকে আবার স্ট্রিং বানানো হয়।

```plaintext
<?php
    $fruits = ["apple", "banana", "mango"];
    echo implode(" | ", $fruits);
    // Output: apple | banana | mango
?>
```

---

## 5\. `md5()`, `sha1()` এবং `hash()`

### `md5()` এবং `sha1()`

স্ট্রিংকে এনক্রিপশন-এর মতো করে হ্যাশে রূপান্তর করে।

```plaintext
<?php
    $password = "mypassword";
    echo md5($password);  
    echo sha1($password);
?>
```

### `hash()`

আরও আধুনিক এবং শক্তিশালী।

```plaintext
<?php
    $password = "mypassword";
    echo hash("sha256", $password);
?>
```

---

## 6\. `htmlspecialchars()` এবং `htmlentities()`

ওয়েব অ্যাপ্লিকেশনে **XSS Attack** প্রতিরোধ করার জন্য ব্যবহার হয়।

```plaintext
<?php
    $text = "<h1>Hello</h1>";
    echo htmlspecialchars($text);  
    // Output: &lt;h1&gt;Hello&lt;/h1&gt;
?>
```

---

## 7\. মাল্টিবাইট স্ট্রিং (mbstring)

বাংলা বা Unicode টেক্সট হ্যান্ডেল করতে `mb_strlen()`, `mb_substr()` ইত্যাদি দরকার হয়।

```plaintext
<?php
    $text = "বাংলা ভাষা";
    echo mb_strlen($text);  
    // Output: 11 (কারণ ইউনিকোড ক্যারেক্টারগুলো আলাদা)
?>
```

---

## 8\. স্ট্রিং ফরম্যাটিং (`sprintf()`)

কোনো স্ট্রিং নির্দিষ্ট ফরম্যাটে সাজাতে ব্যবহৃত হয়।

```plaintext
<?php
    $number = 123.456;
    echo sprintf("Formatted number: %.2f", $number);
    // Output: Formatted number: 123.46
?>
```

---

## 9\. `str_pad()` – টেক্সট সাজানো

```plaintext
<?php
    $text = "PHP";
    echo str_pad($text, 10, "-");
    // Output: PHP-------
?>
```

PHP-তে স্ট্রিং ফাংশনগুলো শুধু সাধারণ কাজের জন্য নয়, বরং **ডেটা ফরম্যাটিং, সিকিউরিটি, এনক্রিপশন, টেক্সট প্রসেসিং**—সবখানেই গুরুত্বপূর্ণ ভূমিকা পালন করে। **Advanced string functions** ভালোভাবে আয়ত্ত করতে পারলে যেকোনো প্রজেক্টে স্ট্রিং ম্যানিপুলেশন সহজ হয়ে যাবে।
