10/10/2018, 11:23
giúp đỡ hàm quản lý chuỗi trong php (str_replace)
$chuoi="lý hoàng thông";
nếu bình thường thì str_replace("thông","dung",$chuoi); thì sẽ ra kết quả là "lý hoàng dung"
nhưng liệu có cách nào để str_replace("thong","dung",$chuoi); thì cũng ra kết quả là "lý hoàng dung" không ?
ngoài ra mong các bạn giúp mình thêm hàm strpos
với $chuoi="đi ăn cơm đây"
thì strpos($chuoi,"cơm")--> kết quả là 8
trong khi strpos($chuoi,"com")--> không có kết quả
mình muốn khi ghi là strpos($chuoi,"com") --> cũng cho ra kết quả là 8
(nghỉa là không hạn chế chữ việt không dấu)
nếu bình thường thì str_replace("thông","dung",$chuoi); thì sẽ ra kết quả là "lý hoàng dung"
nhưng liệu có cách nào để str_replace("thong","dung",$chuoi); thì cũng ra kết quả là "lý hoàng dung" không ?
ngoài ra mong các bạn giúp mình thêm hàm strpos
với $chuoi="đi ăn cơm đây"
thì strpos($chuoi,"cơm")--> kết quả là 8
trong khi strpos($chuoi,"com")--> không có kết quả
mình muốn khi ghi là strpos($chuoi,"com") --> cũng cho ra kết quả là 8
(nghỉa là không hạn chế chữ việt không dấu)
Bài liên quan
cái replace :
$chuoi="lý hoàng thông";
$str = preg_replace('/th[ôốổộo]ng/', 'dung', $chuoi);//không chính xác nó replace các chử
thung, thang.....
echo $str;
$chuoi="lý hoàng thông";
$str = preg_replace('/th..ng/', 'dung', $chuoi);
echo $str;
?>
viết như trên thì giải quyết được cái str_replace rồi hhehe
nhưng còn cái strpos thì sao hả bạn
$chuoi="lý hoàng thông";
$chuoi1="ly hoang thong";
$a='/th.ng/';
$str = preg_replace($a, 'dung', $chuoi1);
echo $str;
?>
như vậy kết quả là "ly hoang dung"
trong khi kết quả cần là "lý hoàng dung"
làm thế nào đây
còn cái tìm vị trí mới chuyển thành chử ko dấu.
thử:
$chuoi="lý hoàng thông";
$str = preg_replace('/th..?ng/', 'dung',$chuoi); //không chính xác nó replace các chử thung, thang.....
echo $str;
///////////////////////////
///////////////////////////////////////////////
không thế thì thế nào?
Với hàm str_replace thì vấn đề phức tạp hơn, nhưng cũng có thể xử lý với hàm str_pos_viet như đã nói ở trên. Thử áp dụng tư duy đệ quy:
+ Với 1 xâu, dùng str_pos_viet để tìm xem có sub str trùng (không dấu) hay không. => Không / Có.
- Không, đơn giản rồi, trả lại nó nguyên gốc
- Có, trả ra phần bên trái của nó nguyên gốc (rõ ràng phần này không có substr tương ứng) + string thay thế + xử lý tiếp cho phần bên phải còn lại.
Đây là cách làm đơn giản và hơi tốn resource, có thể tối ưu hơn bằng cách sử dụng những cách nghĩ khác như explode_viet, preg_match_viet,...
Lưu ý khi viết code làm việc với Tiếng Việt là chúng ta có các hàm mb_* để xử lý Unicode.
Thân ái.
Giả sử sau khi đổi bạn được cái tên LÝ HOANG THÔNG thì sẽ như thế nào?
sử dụng hàm chuỗi để thay thế từ trong chuỗi
ex: chuỗi: con le le dau bo tre
từ gốc: le
từ thay thế: cào
thay thế:
kết quả : con cào cào dau bo tre