Thực ra nếu bạn chịu khó dành khoảng 2h ra để tìm hiểu về regex thì bạn sẽ thấy nó cực kì đơn giản nếu bạn đã có mô tả chính xác về chuỗi mẫu. Thấy khó xong copy trên mạng về thử rất dễ sai và không đúng những gì mình muốn.
Mình sẽ giải thích về regex mình viết.
Có 2 trường hợp tách nhau bởi dấu OR được biểu diễn qua dấu |
\d biểu thị 1 số tự nhiên từ 0-9
[1-9] biểu thị 1 số tự nhiên từ 1-9
dấu ? biểu thị ý nghĩa cụm đằng trước nó có thể xuất hiện 0 hoặc 1 lần
+ là kí tự đằng trước nó xuất hiện từ 1 lần trở lên
* là kí tự đằng trước nó có thể 0 hoặc nhiều lần
dấu . biểu thị dấu chấm, phân cách giữa phần nguyên và phần thực
Diễn giải bằng lời biểu thức của mình:
Số 0 ở đâu sau đó đến dấu chấm sau đó là đến các số từ 0-9 xuất hiện từ 1 đến nhiều lần OR một số bắt đầu bằng 1 số tự nhiên từ 1-9, sau đó có thể có các số từ 0-9 khác hoặc không, kết thúc bằng phần thực sau dấu chấm hoặc không có phần này cũng được
Còn tùy vào yêu cầu của bạn mà bạn có thể sửa lại. Chứ mình viết không False =)), chúng ta không hiểu ý nhau thôi.
Làm thế nào để mình cập nhật thông tin cho cột Altermates, Images, Videos được vậy nhỉ? Mình xem trên github của Dynamic sitemap ko thấy chỗ nào hướng dẫn cập nhật 3 cột này. Mong nhận được hồi âm, mình cảm ơn !
@ductuandt3 À mình định nghĩa 1 số mà bạn cần là 1 số thực dương, mà số thực dương thì không bao giờ có số 0 ở đầu trừ trường hợp số đó lớn 0 nhỏ hơn 1. Tức là những trường hợp đúng sẽ là 0.012, 0.23232, 1.2123, 231.23 và trường hợp sai sẽ là 032.12312, 023.
Nếu bạn muốn có cả trường hợp nhiều số 0 vẫn đúng nữa thì thêm 0+ là được mà.
tóm lại có 2 loại kiểu dữ liệu : primitive và reference, primitive dùng toán tử (==, !=), còn reference dùng method equals. và do equal dùng hashCode, để tránh rắc rối thì kiểu reference nên implement lại hashCode
riêng string thì mình dùng StringUtils trong common lang
Cảm ơn bạn đã góp ý, nhưng theo mình không thể thay toàn bộ từ "cạo" trong bài viết thành "tạo" được vì "crawl data" nghĩa là thu thập, nạo hoặc cào, cạo dữ liệu, đó là dữ liệu đã có trên web và mình cần tìm cách lấy nó về chứ không phải là nó chưa sinh ra mà có thể dùng từ "tạo" như bạn góp ý được
Quả là kiến thức của em còn quá nhỏ bé, em luôn luôn dùng register để binding. Cảm ơn anh vì đã bỏ thời gian ra trả lời những thắc mắc vặt vãnh của em ạ (bow)
Giờ họ muốn các class Provider có thể có hàm register hoặc không có cũng được chăng
Mục đích của các Provider nhằm register việc binding vào Service Container. Vậy thì chắc chắc phải dùng hàm này được dùng chứ anh nhỉ. Nếu k dùng hàm register gọi gì là class Provider nữa ?
Còn cách giải thích nào khác không anh
Phần register provider nó được đưa vào trong Illuminate/Foundation/Application.php rồi
Việc sử dụng abstract protected functionem thấy tuân thủ lập trình hướng đối tượng mà anh nhỉ ! Tại sao phải thay đổi ? Phải chăng đằng sau đó là 1 tư tưởng hay 1 style code gì mới chăng ?
THẢO LUẬN
Thực ra nếu bạn chịu khó dành khoảng 2h ra để tìm hiểu về regex thì bạn sẽ thấy nó cực kì đơn giản nếu bạn đã có mô tả chính xác về chuỗi mẫu. Thấy khó xong copy trên mạng về thử rất dễ sai và không đúng những gì mình muốn.
Mình sẽ giải thích về regex mình viết.
Có 2 trường hợp tách nhau bởi dấu OR được biểu diễn qua dấu |
Diễn giải bằng lời biểu thức của mình:
Số 0 ở đâu sau đó đến dấu chấm sau đó là đến các số từ 0-9 xuất hiện từ 1 đến nhiều lần OR một số bắt đầu bằng 1 số tự nhiên từ 1-9, sau đó có thể có các số từ 0-9 khác hoặc không, kết thúc bằng phần thực sau dấu chấm hoặc không có phần này cũng được
Còn tùy vào yêu cầu của bạn mà bạn có thể sửa lại. Chứ mình viết không False =)), chúng ta không hiểu ý nhau thôi.
Làm thế nào để mình cập nhật thông tin cho cột Altermates, Images, Videos được vậy nhỉ? Mình xem trên github của Dynamic sitemap ko thấy chỗ nào hướng dẫn cập nhật 3 cột này. Mong nhận được hồi âm, mình cảm ơn !
@ductuandt3 À mình định nghĩa 1 số mà bạn cần là 1 số thực dương, mà số thực dương thì không bao giờ có số 0 ở đầu trừ trường hợp số đó lớn 0 nhỏ hơn 1. Tức là những trường hợp đúng sẽ là 0.012, 0.23232, 1.2123, 231.23 và trường hợp sai sẽ là 032.12312, 023.
Nếu bạn muốn có cả trường hợp nhiều số 0 vẫn đúng nữa thì thêm 0+ là được mà.
tóm lại có 2 loại kiểu dữ liệu : primitive và reference, primitive dùng toán tử (==, !=), còn reference dùng method equals. và do equal dùng hashCode, để tránh rắc rối thì kiểu reference nên implement lại hashCode
riêng string thì mình dùng StringUtils trong common lang
Mình xài bộ đôi Ampps + cakephp hơn năm rồi trên macos khá là ổn định!
nếu bạn muốn 0. vẫn đúng thì thử cái này numberRegex = /^([+-]?[1-9]\d*|0)(.\d*)?$/
Cảm ơn bạn đã góp ý, nhưng theo mình không thể thay toàn bộ từ "cạo" trong bài viết thành "tạo" được vì "crawl data" nghĩa là thu thập, nạo hoặc cào, cạo dữ liệu, đó là dữ liệu đã có trên web và mình cần tìm cách lấy nó về chứ không phải là nó chưa sinh ra mà có thể dùng từ "tạo" như bạn góp ý được
Mình muốn replace toàn bộ từ "cạo" trong bài viết của bạn thành "tạo" quá! Nhìn sai chính tả trong bài viết buồn quá!
@huusu1996 Mình 96 nhé =)). Nhưng mà hot fix kiểu xóa nút này không được hay cho lắm nhỉ =))
@tuanbacyen Em k phải team Viblo ạ =))
1 article có nhiều tag, bạn dùng $article->tags[0]->name là ra tag thứ 1
Cũng sr team nhé. Tại mình tìm mãi ko thấy cái feedback




Quả là kiến thức của em còn quá nhỏ bé, em luôn luôn dùng register để binding. Cảm ơn anh vì đã bỏ thời gian ra trả lời những thắc mắc vặt vãnh của em ạ (bow)
Còn nhiều cách để binding mà em
như dùng biến
$bindings, biến$singletons.Hoặc là em chỉ cần chạy hàm
bootmà không cầnregisterEm tham khảo mấy cách viết Service Provider này https://laravel.com/docs/5.7/providers#writing-service-providers , nhiều cái không cần đến hàm
registermàMục đích của các Provider nhằm

Còn cách giải thích nào khác không anh 

registerviệc binding vào Service Container. Vậy thì chắc chắc phải dùng hàm này được dùng chứ anh nhỉ. Nếu k dùng hàmregistergọi gì là class Provider nữa ?Cái này thì lâu rồi anh không theo dõi Laravel nữa nên anh cũng không dám chắc,
nhưng theo suy đoán của anh thì:
Trước thì hàm
register()là hàmabstract, tức em bắt buộc phải khai báo khi viết class kế thừa từIlluminate\Support\ServiceProvider.Giờ họ muốn các class Provider có thể có hàm
registerhoặc không có cũng được chăngNhư trường hợp hàm
register()trong Provider không có nội dung gì chẳng hạn, trước thì em vẫn phải viết hàm rỗng, giờ em có thể bỏ hẳn đi@ductuandt3 Làm thêm cái if check trường hợp chỉ toàn là số 0 thì false luôn cũng được bạn nhỉ?
bạn ơi Regex bạn đưa nhập số 0 đầu tiên đã báo False rồi bạn
Cho em hỏi vặt 1 câu nữa ạ


Việc sử dụng
abstract protected functionem thấy tuân thủ lập trình hướng đối tượng mà anh nhỉ ! Tại sao phải thay đổi ? Phải chăng đằng sau đó là 1 tư tưởng hay 1 style code gì mới chăng ?