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)
wantlove viết 13:30 ngày 10/10/2018
Được gửi bởi lehoan623
$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)
replace tất cả các ký tự utf8 thành không dấu của chuổi vào sau đó làm bình thường.

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;
lehoan623 viết 13:26 ngày 10/10/2018
<?php
$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
wantlove viết 13:36 ngày 10/10/2018
Được gửi bởi lehoan623
<?php
$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
kiêm trên mạng cái hàm replace $chuoi="đi ăn cơm đây" thành "di an com day" rồi tìm chử vị trí "com"
lehoan623 viết 13:38 ngày 10/10/2018
<?php
$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
wantlove viết 13:25 ngày 10/10/2018
Được gửi bởi lehoan623
<?php
$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
tớ không biết nhiều vể math lắm nhưng thư dùng xem.
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;
lehoan623 viết 13:31 ngày 10/10/2018
sao lại replace chuoi1.$str = preg_replace($a, 'dung', $chuoi);
///////////////////////////
///////////////////////////////////////////////

không thế thì thế nào?
tiendx2002 viết 13:34 ngày 10/10/2018
Được gửi bởi lehoan623
$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)
Với hàm str_pos_viet thì khá đơn giản bạn đầu tiên không dấu hóa cả hai string cần str_pos, tham khảo http://www.ddth.com/showthread.php?t=79268, sau đó mới gọi str_pos trả ra kết quả.
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.
thuyduongcd viết 13:36 ngày 10/10/2018
Cách làm thì có nhiều. Nhưng vấn đề là bạn làm như thế để làm gì? Một chuỗi nếu có dấu thì có dấu hết, còn không dấu thì không dấu hết. Không ai lại đi dùng lung tung chữ thì dấu chữ thì không như vậy (trừ phi bản thân nó là không dấu).
Giả sử sau khi đổi bạn được cái tên LÝ HOANG THÔNG thì sẽ như thế nào?
nguyenhuuvu22391 viết 13:38 ngày 10/10/2018
có ai sử dụng hàm chuỗi làm giúp giùm em với

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
Bài liên quan
0