Strings là một trong những kiểu dữ liệu quan trọng và được dùng thông dụng nhất trong lập trình PHP. Trong bài viết này, mình xin chia sẽ các cách xử lý chuỗi thường được sử dụng khi lập trình PHP nhất, mình sẽ cập nhật thường xuyên bài này vì có rất nhiều vấn đề liên quan đến chuỗi không thể viết trong 1 bài được…

1.Loại bỏ kí tự có dấu

Sử dụng str_replace để thay thế, chuyển đổi các kí tự có dấu sang không dấu, cái này thông thường nếu sử dụng các Framework PHP thì nó có hỗ trợ nhưng nếu cần tự mình làm thì các bạn có thể sử dụng.


function unicode_convert($str){
 if(!$str) return false;
 $unicode = array(
  'a'=>array('á','à','ả','ã','ạ','ă','ắ','ặ','ằ','ẳ','ẵ','â','ấ','ầ','ẩ','ẫ','ậ'),
  'A'=>array('Á','À','Ả','Ã','Ạ','Ă','Ắ','Ặ','Ằ','Ẳ','Ẵ','Â','Ấ','Ầ','Ẩ','Ẫ','Ậ'),
  'd'=>array('đ'),
  'D'=>array('Đ'),
  'e'=>array('é','è','ẻ','ẽ','ẹ','ê','ế','ề','ể','ễ','ệ'),
  'E'=>array('É','È','Ẻ','Ẽ','Ẹ','Ê','Ế','Ề','Ể','Ễ','Ệ'),
  'i'=>array('í','ì','ỉ','ĩ','ị'),
  'I'=>array('Í','Ì','Ỉ','Ĩ','Ị'),
  'o'=>array('ó','ò','ỏ','õ','ọ','ô','ố','ồ','ổ','ỗ','ộ','õ','ớ','ờ','ở','ỡ','ợ'),
  '0'=>array('Ó','Ò','Ỏ','Õ','Ọ','Ô','Ố','Ồ','Ổ','Ỗ','Ộ','Õ','Ớ','Ờ','Ở','Ỡ','Ợ'),
  'u'=>array('ú','ù','ủ','ũ','ụ','ý','ứ','ừ','ử','ữ','ự'),
  'U'=>array('Ú','Ù','Ủ','Ũ','Ụ','Ý','Ứ','Ừ','Ử','Ữ','Ự'),
  'y'=>array('ý','ỳ','ỷ','ỹ','ỵ'),
  'Y'=>array('Ý','Ỳ','Ỷ','Ỹ','Ỵ'),
 );
 foreach($unicode as $nonUnicode=>$uni){
  foreach($uni as $value)
   $str = str_replace($value,$nonUnicode,$str);
 }
 return $str;
}

Có thể mình liệt kê không đầy đủ các bạn có thể tự bổ sung nhá.

Cách sử dụng:


$str = "Strings là một trong những kiểu dữ liệu quan trọng và được dùng thông dụng nhất trong lập trình PHP. Trong bài viết này, mình xin chia sẽ các cách xử lý chuỗi thường được sử dụng khi lập trình PHP nhất, mình sẽ cập nhật thường xuyên bài này vì có rất nhiều vấn đề liên quan đến chuỗi không thể viết trong 1 bài được...";

echo $this->unicode_convert($str);//kết quả sẽ thành các chữ không có dấu, nếu có thì các bạn thêm nó vào trong mảng của hàm trên

2.Sử dụng strip_tags để loại bỏ các thành phần HTML

Khi người dùng gửi dữ liệu và chúng ta cần lưu các đoạn text, nhưng nếu các bạn không cần lưu các tag html không cần thiết, chúng ta có thể dễ dàng loại bỏ bằng cách sử dụng hàm strip_tags(), nó làm hàm PHP nên các bạn có thể gọi trực tiếp:


$str = "Strings là một trong những kiểu dữ liệu quan trọng và được dùng thông dụng nhất trong lập trình PHP. Trong bài viết này, mình xin chia sẽ các cách xử lý chuỗi thường được sử dụng khi lập trình PHP nhất, mình sẽ cập nhật thường xuyên bài này vì có rất nhiều vấn đề liên quan đến chuỗi không thể viết trong 1 bài được...<p>nongdanit</p>";
echo strip_tags($str, "");//kết quả sẽ không còn thẻ <p></p>

3. Lấy đoạn text nằm giữa $textstart và $textend

Nó sẽ giúp cho chúng ta lấy được đoạn text nằm ở giữa 2 chữ được chỉ định:


function GetTextBetween($str,$textstart,$textend){
  $r = explode($textstart, $str);
  if (isset($r[1])){
   $r = explode($textend, $r[1]);
   return $r[0];
  }
 return '';
}

Cách sử dụng:


$str = "Strings là một trong những kiểu dữ liệu quan trọng và được dùng thông dụng nhất trong lập trình PHP. Trong bài viết này, mình xin chia sẽ các cách xử lý chuỗi thường được sử dụng khi lập trình PHP nhất, mình sẽ cập nhật thường xuyên bài này vì có rất nhiều vấn đề liên quan đến chuỗi không thể viết trong 1 bài được...";
echo $this->GetTextBetween($str, 'Strings', 'trong');//kết quả sẽ là 2 chữ: là một

4. Random một chuỗi các kí tự bất kỳ từ các ký tự được chỉ định

Nó sẽ tự động tạo ra một chuỗi bất kỳ từ các ký tự được chỉ định, hàm này mình chỉ sử dụng các ký tự, nếu muốn chỉ là số hoặc có ký tự lẫn số thì các bạn hãy tự mở rộng ra nhá. Chú ý là số truyền vào là số bao gồm cả số 0,nếu truyền 0 sẽ sinh ra 1 kí tự, truyền 5 thì sinh ra 6… mình tự phát triển nên ai muốn sửa lại thì tự sửa nha.


function randomText($option=17){
  $int = rand(0,51);
  $a_z = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  $rand_letter = $a_z[$int];
  for($i=0;$i<$option;$i++){
   $int1 = rand(0,51);
   $rand_letter.= $a_z[$int1];
  }
  return $rand_letter;
}

Cách sử dụng:


echo $this->randomText(0);//kết quả ra 1 kí tự bất kỳ

5.Loại bỏ URL từ một chuỗi bất kỳ

Loại bỏ mọi link có trong chuỗi:


function DeleteURL($str){
 return preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&amp;@#\/%?=~_|$!:,.;]*[A-Z0-9+&amp;@#\/%=~_|$]/i', '', $str);
}

Sử dụng:


$str = "Strings là một trong những kiểu dữ liệu quan trọng và được dùng thông dụng nhất trong lập trình PHP. Trong bài viết này, mình xin chia sẽ các cách xử lý chuỗi thường được sử dụng khi lập trình PHP nhất, mình sẽ cập nhật thường xuyên bài này vì có rất nhiều vấn đề liên quan đến chuỗi không thể viết trong 1 bài được...http://nongdanit.info";
echo $this->DeleteURL($str);//kết quả sẽ không còn http://nongdanit.info nữa

6. Chuyển đổi strings sang slugs

Bạn muốn tạo slugs dùng cho SEO giống như wordpress từ tiêu đề bài viết. Đoạn code sau đây sẽ giúp các bạn làm điều này


function slug($str){
  $str = strtolower(trim($str));
  $str = preg_replace('/[^a-z0-9-]/', '-', $str);
  $str = preg_replace('/-+/', "-", $str);
  return $str;
}

Cách sử dung:


$str = "10 PHP and MYSQL ";
echo $this->slug($str);

Chú ý là nếu chuỗi chúng ta có tiếng việt có dấu để sử dụng được hàm này thì cần sử dụng hàm unicode_convert() ở trên để chuyển về không dấu trước rùi mới gọi hàm slug()

7. Tìm kiếm chuỗi trong chuỗi

Kết quả trả về sẽ là true nếu tìm thấy chuỗi ngược lại thì trả về false.Trong function sẽ có biến xác định chuyển cả 2 chuỗi sáng chữ thường rùi mới so sánh


function contains($str, $content, $ignorecase=true){
  if ($ignorecase){
   $str = strtolower($str);
   $content = strtolower($content);
  }
  return strpos($content,$str) ? true : false;
}

Cách sử dụng: tìm chuỗi AND trong chuỗi, khi $ignorecase là true nó sẽ chuyển ‘AND’ thành ‘and’ và tìm kiếm sẽ được Yes ngược lại sẽ là No


$str = "10 PHP and MYSQL ";
$result = $this->contains('AND',$str, true);
if($result){
 echo 'Yes';
}else echo 'No';

8. Cắt chuỗi theo chiều dài chỉ định

Cắt chuỗi thành một chuỗi khác với chiều dài chỉ định, và đặc biệt là đoạn chuỗi được lấy ra sẽ chỉ được cắt tại chỗ ngắt dòng, nó sẽ không làm chuỗi bị ngắt giữa chừng.


function trunate($string, $limit, $break=".", $pad="...") {
  if(strlen($string) <= $limit) return $string;
  if(false !== ($breakpoint = strpos($string, $break, $limit))) {
    if($breakpoint < strlen($string) - 1) {
      $string = substr($string, 0, $breakpoint) . $pad;
    }
  }
  return $string;
}

Sử dụng:


$str = "10 PHP and MYSQL ";
echo $this->trunate($str, 4, ' ');//kết quả sẽ là : 10 PHP...

9. Hiển thị số điện thoại Việt Nam theo yêu cầu.

Yêu cầu là có sdt của VN(loại số điện thoại 10 số và 11 số) muốn hiển thị theo dạng: 0989-078-686 hoặc 01668-884-600

Mình sẽ là như sau: tự viết thôi nha có ai có cách hay khác thì xin chỉ giáo


public function showPhone($phone){
  $phoneleng = strlen($phone);
  $newVal = '';
  $val = '';
  if($phoneleng >= 10){
   if($phoneleng == 10){
    $newVal = $newVal.substr($phone,0,4).'-';
    $val = substr($phone,4);
   }
   if($phoneleng >= 11){
    $newVal = $newVal.substr($phone,0,5).'-';
    $val = substr($phone,5);
   }

  while (strlen($val) > 3) {
   $newVal = $newVal. substr($val,0, 3).'-';
   $val = substr($val,3);
   }
 }
 $newVal .= $val;
 return $newVal;
}

Sử dụng:


$str = "0900909090";
echo $this->showPhone($str);//kết quả 0900-909-090

10. Hiển thị thời gian dạng text khi truyền 1 thời gian đã qua

Giả sử khi truyền vào một ngày quá khứ ví dụ 2010-10-21 10:10:10 thì nó sẽ hiển thị cách thời điểm hiện tại bao nhiêu ngày, giờ, phút. Hơn 1 năm sẽ hiển thị là nhiêu năm, hơn 1 tháng thì hiện nhiêu tháng,…Nói ra khó hình dung quá, xem ví dụ các bạn sẽ hiểu


public function get_time_text($date){
  $diff = abs(strtotime($date) - time());
  $years = floor($diff / (365*60*60*24));
  if($years>=1){
   return $years." năm trước";
   }
  $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
  if($months >=1){
   return $months." tháng trước";
  }
  $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24) / (60*60*24));
  if($days >=1){
   return $days." ngày trước";
  }
  $hours = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24) / (60*60));
  if($hours >=1){
   return $hours." giờ trước";
  }
  $minutes = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60) / 60);
  return $minutes." phút trước";
//$seconds = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60 - $minutes*60));
}

Sử dụng:


$str = "2012-10-21 10:10:10";
echo $this->get_time_text($str);//4 năm trước
$str = "2017-1-10 10:10:10";
echo $this->get_time_text($str);//1 tháng trước
$str = "2017-2-14 10:10:10";
echo $this->get_time_text($str);//1 ngày trước
$str = "2017-2-15 13:10:10";
echo $this->get_time_text($str);//1 giờ trước


Còn tiếp…

Làm việc với chuỗi trong PHP