Cách trích xuất số từ chuỗi trong PHP
Bài viết này hướng dẫn cách trích xuất các số từ chuỗi trong PHP bằng nhiều cách khác nhau như sử dụng regex (biểu thức chính quy), các hàm PHP có sẵn như `preg_match_all`, `filter_var`, và các phương pháp thủ công.
Trích xuất số từ chuỗi là một tác vụ phổ biến khi xử lý dữ liệu đầu vào. Bài viết này sẽ giới thiệu nhiều cách khác nhau để trích xuất các số từ chuỗi trong PHP, bao gồm sử dụng biểu thức chính quy (regex) và các hàm tích hợp sẵn của PHP.
Mã PHP:
Cách 1: Sử dụng preg_match_all
với regex
<?php
$string = "The price is 200 dollars and 30 cents.";
// Sử dụng regex để tìm tất cả các số trong chuỗi
preg_match_all('!\d+!', $string, $matches);
// Trả về mảng chứa các số đã được trích xuất
print_r($matches[0]);
?>
Cách 2: Sử dụng filter_var
với hàm FILTER_SANITIZE_NUMBER_INT
<?php
$string = "The price is 200 dollars and 30 cents.";
// Lọc chuỗi để chỉ giữ lại các số nguyên
$numbers = filter_var($string, FILTER_SANITIZE_NUMBER_INT);
// In ra số đã được lọc
echo $numbers;
?>
Cách 3: Trích xuất số theo cách thủ công
<?php
$string = "The price is 200 dollars and 30 cents.";
// Lặp qua từng ký tự trong chuỗi và lưu lại các số
$numbers = '';
for ($i = 0; $i < strlen($string); $i++) {
if (is_numeric($string[$i])) {
$numbers .= $string[$i];
}
}
// In ra các số đã được trích xuất
echo $numbers;
?>
Giải thích chi tiết từng dòng code:
Cách 1: preg_match_all
-
preg_match_all('!\d+!', $string, $matches);
: Sử dụng biểu thức chính quy để tìm tất cả các chuỗi ký tự số. -
print_r($matches[0]);
: In ra mảng chứa tất cả các số tìm thấy.
Cách 2: filter_var
-
filter_var($string, FILTER_SANITIZE_NUMBER_INT);
: Loại bỏ tất cả các ký tự không phải số trong chuỗi, chỉ giữ lại số nguyên.
Cách 3: Phương pháp thủ công
-
for ($i = 0; $i < strlen($string); $i++)
: Lặp qua từng ký tự trong chuỗi. -
if (is_numeric($string[$i]))
: Kiểm tra xem ký tự có phải là số hay không. -
echo $numbers;
: In ra các số đã được trích xuất.
Yêu cầu hệ thống:
- PHP phiên bản 7.0 trở lên.
Lời khuyên:
- Khi làm việc với chuỗi có chứa số và ký tự khác, hãy luôn kiểm tra đầu vào để tránh lỗi dữ liệu không mong muốn.
- Nếu chuỗi có chứa cả số âm hoặc số thực, bạn nên điều chỉnh biểu thức chính quy hoặc phương pháp xử lý để phù hợp.