10/10/2018, 09:31
Hỏi về hàm str_replace
Cho mình hỏi làm thế nào để thay thế dãy chữ số 1234567890187654329 thành 13333333901333333339 mà chỉ cần biết số 1 và số 9 thôi là có thể thay thế các số từ 1 đến 9 thành 1 số khác.
Bài liên quan
$a='1234567890187654329';
$ax=array("2","4","5","6","7","8");
$a=str_replace($ax,"3",$a);
echo $a;
?>
Mình xin đưa ra câu hỏi đầy đủ bạn giúp mình với nha.
Mình có 1 chuỗi bao ghồm dãy chữ cái và số là 00000000123EHE9900000000123EHH9900000000123FFJ9900000000
Trong đó chia ra làm 3 chuỗi cần thay thế
123EHE99
123EHH99
123FFJ99
3 chuỗi trên chỉ có 3 ký tự ở giữa là ẩn số, không thể biết được giá trị mà chỉ biết được nó có 3 ký tự vì luôn luôn thay đổi.
1. 3 số đầu với 2 số cuối của chuỗi thì giữ nguyên
2. mỗi chuỗi cách nhau 8 ký tự vd như trên.
Làm cách nào để thay thế 3 chuỗi trên thành ký tự khác.
Mình đã thử = code sau để tes nhưng chỉ có tác dụng 1 chuỗi thôi.
mình đã làm thử code sau và tes thử
00000000123EHE9900000000123EHH9900000000123FFJ9900 000000 là 1 chuỗi chưa biết ?
các chữ EHE EHH FFJ là các số và có thể chúng là 123 ? 990 ? 000 được ko ?
bạn phải nói rõ các yêu cầu thì mới đưa ra giải pháp chính xác được .
[=========> Bổ sung bài viết <=========]
mình để ý thấy các số 000000000 và các số 123...99 vừa đủ 8 số . nếu vậy thì mọi thứ sẽ dễ dàng !
123?99 dấu ? ở giữa là 3 ký tự luôn biến đổi.
có thể làm cho 3 chuỗi trên thành 1 chuỗi tự tạo ra là thành công rồi.
[=========> Bổ sung bài viết <=========]
Hoặc bạn có thể giải giúp mình các tìm kiếm sau để so sánh là mình có thể xử lý được code trên rồi
mình dùng mã php trên để insert vào 1 table và có 1 bảng dữ liệu sau:
[=========> Bổ sung bài viết <=========]
Nhưng mình chưa biết cách để $arr tìm thấy 123FFJ99 và các số còn lại để đưa vào hàm.
$str = "00000000123FFJ990000000000000000123EJS99123AJY9900000000123FUR9900000000123UUJ99";
if (preg_match_all("/123***91;A-Z***93;{3}99/", $str, $matches)) {
print_r($matches***91;0***93;);// Dùng foreach để xử lý từng phần tử tìm thấy
} else {
echo "Không tìm thấy Code đúng định dạng";
}
Ở đây có 2 chuỗi ghồm 32 ký tự
Mình muốn set cho thành câu lệnh sau
$str = "0F0000D3879D000000C00000000000000F0000CBD2F9000000C0000000000000";
$pattern = "0F***91;0***93;{4}"; // Bắt đầu là "0F0000" (0F và 4 số 0)
$pattern .= "(***91;0-9A-Z^0***93;{6})"; // Theo sau là 6 kí tự 0-9, A-Z và ko được có số 0 (hoặc viết là "***91;1-9A-Z***93;{6}" cũng okie)
$pattern .= "***91;0C***93;{20}"; // Theo sau nữa là 20 kí tự 0 hoặc C
if (preg_match_all("/{$pattern}/", $str, $matches)) {
print_r($matches***91;0***93;);// Dùng foreach để xử lý từng phần tử tìm thấy
print_r($matches***91;1***93;);// Dùng foreach để xử lý từng phần tử có nghĩa nhất (6 kí tự ở giữa - "(***91;0-9A-Z^0***93;{6})")
} else {
echo "Không tìm thấy Code đúng định dạng";
}
Regards!
Mình cho
[=========> Bổ sung bài viết <=========]
Cảm ơn bạn đã giúp mình về đoạn mã trên và mình đã tách được nó ra làm 2 mảng như sau
[=========> Bổ sung bài viết <=========]
Mình hoàn thiện xong rồi cảm ơn bạn đã giúp đỡ.