<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lập trình - Hi You, I am Tade</title>
	<atom:link href="https://hoangthuc.com/category/lap-trinh/feed/" rel="self" type="application/rss+xml" />
	<link>https://hoangthuc.com/category/lap-trinh/</link>
	<description></description>
	<lastBuildDate>Tue, 07 Nov 2023 02:16:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://hoangthuc.com/wp-content/uploads/2024/02/logoTH-2-150x150.png</url>
	<title>Lập trình - Hi You, I am Tade</title>
	<link>https://hoangthuc.com/category/lap-trinh/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>HTTP status code là gì? Danh sách đầy đủ HTTP status code</title>
		<link>https://hoangthuc.com/http-status-code-la-gi-danh-sach-day-du-http-status-code/</link>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Tue, 07 Nov 2023 02:11:27 +0000</pubDate>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=878</guid>

					<description><![CDATA[<p>Dù có là 1 lập trình viên web hay không, chắc hẳn bạn cũng đã bắt gặp HTTP status code (mã trạng thái HTTP) ít nhất 1 hay nhiều lần rồi đúng không nào? 200, 404, 500… đều là những HTTP status code phổ biến. Thậm chí các truyện vui hay ảnh chế meme về [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/http-status-code-la-gi-danh-sach-day-du-http-status-code/">HTTP status code là gì? Danh sách đầy đủ HTTP status code</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Dù có là 1 lập trình viên web hay không, chắc hẳn bạn cũng đã bắt gặp HTTP status code (mã trạng thái HTTP) ít nhất 1 hay nhiều lần rồi đúng không nào?</p>



<p>200, 404, 500… đều là những HTTP status code phổ biến. Thậm chí các truyện vui hay ảnh chế meme về 404 cũng khá nổi tiếng và đầy rẫy trên mạng Internet mà hầu hết bất kỳ ai cũng có thể hiểu được.</p>



<p>Vậy thì có bao giờ bạn thắc mắc HTTP status code là gì và ý nghĩa các con số của chúng hay chưa? Hôm nay chúng ta sẽ nói tổng quát 1 chút về HTTP status code và ý nghĩa nằm ẩn sau các con số đó nhé!</p>



<h2 class="wp-block-heading" id="http-status-code-ma-trang-thai-http-la-gi">HTTP Status Code – Mã trạng thái HTTP là gì?</h2>



<p>Khi được nhận và phiên dịch 1 yêu cầu HTTP từ phía client, HTTP status code sẽ được máy chủ cung cấp để đáp ứng yêu cầu đó của họ. Nó bao gồm code từ IETF Request for Comments (RFC), các thông số kỹ thuật khác và 1 số code bổ sung được sử dụng trong 1 số ứng dụng phổ biến của giao thức HTTP.</p>



<p>Chữ số đầu tiên của HTTP status code chỉ định 1 trong 5 loại phản hồi quy chuẩn. Các cụm tin nhắn được hiển thị chỉ mang tính tượng trưng, nhưng cũng có thể cung cấp bất kỳ thông tin bổ sung nào để chúng ta có thể đọc được. Trừ khi có những chỉ định khác, HTTP status code được xem như 1 phần của quy chuẩn HTTP/1.1 (RFC 7231).</p>



<p>Cơ Quan Cấp Số Được Ấn Định Trên Internet (tức IANA hay The Internet Assigned Numbers Authority) chính là nơi duy trì sổ đăng ký chính thức của các HTTP status code.</p>



<h2 class="wp-block-heading" id="hang-muc-cac-http-status-code">Hạng mục các HTTP status code</h2>



<p>Tất cả các HTTP status code phản hồi được chia ra thành 5 hạng mục riêng biệt và là các số nguyên có 3 chữ số. Chữ số đầu được dùng để xác định loại phản hồi, trong khi 2 chữ số cuối thì không có bất kỳ vai trò phân loại nào. HTTP status code sẽ cho ta biết liệu 1 yêu cầu HTTP cụ thể đã được hoàn thành thành công hay chưa.</p>



<p>Các ứng dụng hiểu HTTP status code không cần phải biết hết tất cả code, tức là dù code không xác định cũng có cụm từ để chỉ lý do không xác định. Cụm từ này không cho phía client nhiều thông tin nhưng các ứng dụng HTTP đó phải hiểu được nó thuộc 1 trong 5&nbsp; hạng mục riêng biệt. 5 hạng mục đó bao gồm:</p>



<p>–&nbsp;<strong>1xx (100 – 199): Information responses / Phản hồi thông tin</strong>&nbsp;– Yêu cầu đã được chấp nhận và quá trình xử lý yêu cầu của bạn đang được tiếp tục.</p>



<p>–&nbsp;<strong>2xx (200 – 299): Successful responses / Phản hồi thành công</strong>&nbsp;– Yêu cầu của bạn đã được máy chủ tiếp nhận, hiểu và xử lý thành công.</p>



<p>–&nbsp;<strong>3xx (300 – 399): Redirects / Điều hướng</strong>&nbsp;– Phía client cần thực hiện hành động bổ sung để hoàn tất yêu cầu.</p>



<p>–&nbsp;<strong>4xx (400 – 499): Client errors / Lỗi phía client</strong>&nbsp;– Yêu cầu không thể hoàn tất hoặc yêu cầu chứa cú pháp không chính xác. 4xx sẽ hiện ra khi có lỗi từ phía client do không đưa ra yêu cầu hợp lệ.</p>



<p>–&nbsp;<strong>5xx (500 – 599): Server errors / Lỗi phía máy chủ</strong>&nbsp;– Máy chủ không thể hoàn thành yêu cầu được cho là hợp lệ. Khi 5xx xảy ra, bạn chỉ có thể đợi để bên hệ thống máy chủ xử lý xong.</p>



<h2 class="wp-block-heading" id="danh-sach-day-du-cac-http-status-code-code-cum-tu-chi-ly-do">Danh sách đầy đủ các HTTP status code (code + cụm từ chỉ lý do):</h2>



<h3 class="wp-block-heading" id="1-information-responses-phan-hoi-thong-tin">1. Information responses / Phản hồi thông tin:</h3>



<p>–&nbsp;<em>100 Continue:</em>&nbsp;Phản hồi tạm thời này cho biết rằng mọi thứ tới hiện tại vẫn ổn và phía client nên tiếp tục yêu cầu hay bỏ qua phản hồi nếu yêu cầu đã hoàn tất.</p>



<p>–&nbsp;<em>101 Switching Protocol:</em>&nbsp;Code này được gửi để phản hồi header yêu cầu Upgrade từ phía client và cho biết giao thức máy chủ đang chuyển sang.</p>



<p>–&nbsp;<em>102 Processing (<a href="http://www.webdav.org/">WebDAV</a>):</em>&nbsp;Code này cho biết rằng máy chủ đã nhận và đang xử lý yêu cầu, nhưng phản hồi vẫn chưa có hiệu lực.</p>



<p>–&nbsp;<em>103 Early Hints:</em>&nbsp;Được sử dụng để trả về một số tiêu đề phản hồi trước message HTTP cuối cùng.</p>



<h3 class="wp-block-heading" id="2-successful-responses-phan-hoi-thanh-cong">2. Successful responses / Phản hồi thành công:</h3>



<p>–&nbsp;<em>200 OK:</em>&nbsp;Yêu cầu đã thành công. Ý nghĩa của thành công còn phụ thuộc vào phương thức HTTP là gì:</p>



<p><em>GET:</em>&nbsp;Tài nguyên đã được tìm nạp và được truyền trong nội dung thông điệp.<br><em>HEAD:</em>&nbsp;Các header thực thể nằm trong nội dung thông điệp.<br><em>PUT hoặc POST:</em>&nbsp;Tài nguyên mô tả kết quả của hành động được truyền trong nội dung thông điệp.<br><em>TRACE:</em>&nbsp;Nội dung thông điệp chứa thông báo yêu cầu khi máy chủ nhận được.</p>



<p>–&nbsp;<em>201 Created:</em>&nbsp;Yêu cầu đã thành công và kết quả là một tài nguyên mới đã được tạo. Đây thường là phản hồi được gửi sau các yêu cầu POST hoặc một số yêu cầu PUT.</p>



<p>–&nbsp;<em>202 Accepted:</em>&nbsp;Yêu cầu đã được nhận nhưng chưa được thực hiện. Yêu cầu này là non-committal, vì không có cách nào trong HTTP để gửi sau đó một phản hồi không đồng bộ cho biết kết quả của yêu cầu. Nó dành cho các trường hợp trong đó 1 quá trình / máy chủ khác xử lý yêu cầu hoặc để xử lý hàng loạt.</p>



<p>–&nbsp;<em>203 Non-Authoritative Information:</em>&nbsp;Code phản hồi này có nghĩa là siêu thông tin được trả về không hoàn toàn giống với thông tin có sẵn từ máy chủ gốc, nhưng được thu thập từ phần copy local hay của bên phía thứ 3. Code này chủ yếu được sử dụng để phản chiếu hoặc sao lưu tài nguyên khác. Ngoại trừ trường hợp cụ thể đó, thông thường phản hồi “200 OK” được ưu tiên cho trạng thái này.</p>



<p>–&nbsp;<em>204 No Content:</em>&nbsp;Không có nội dung để gửi cho yêu cầu này, nhưng các header có thể hữu dụng. User-agent có thể cập nhật các header đã lưu trong bộ nhớ cache cho tài nguyên này bằng các header mới.</p>



<p>–&nbsp;<em>205 Reset Content:</em>&nbsp;Cho user-agent biết để reset document đã gửi yêu cầu này.</p>



<p>–&nbsp;<em>206 Partial Content:</em>&nbsp;Code phản hồi này được dùng khi Range header được gửi từ client để yêu cầu chỉ 1 phần của nguồn tài nguyên.</p>



<p>–&nbsp;<em>207 Multi-Status (<a href="http://www.webdav.org/">WebDAV</a>):</em>&nbsp;Truyền tải thông tin về nhiều nguồn tài nguyên, đối với các trường hợp mà nhiều status code có thể đều thích hợp.</p>



<p>–&nbsp;<em>208 Already Reported (<a href="http://www.webdav.org/">WebDAV</a>):</em>&nbsp;Được sử dụng trong 1 phần tử phản hồi&nbsp;<code>&lt;dav:propstat&gt;</code>&nbsp;để tránh liệt kê nhiều lần các thành viên nội tại của nhiều liên kết vào cùng 1 tập hợp.</p>



<p>–&nbsp;<em>226 IM Used (<a href="https://tools.ietf.org/html/rfc3229">HTTP Delta encoding</a>):</em>&nbsp;Máy chủ đã hoàn thành yêu cầu&nbsp;<em>GET</em>&nbsp;cho nguồn tài nguyên và phản hồi là sự trình bày kết quả của 1 hoặc nhiều thao tác instance được áp dụng cho instance hiện tại.</p>



<h3 class="wp-block-heading" id="3-redirects-dieu-huong">3. Redirects / Điều hướng:</h3>



<p>–&nbsp;<em>300 Multiple Choice:</em>&nbsp;Yêu cầu có thể có nhiều hơn 1 phản hồi khả dụng. User-agent hay user nên chọn 1 trong số đó. (Không có cách chuẩn hóa nào để chọn 1 trong các phản hồi, nhưng HTML liên kết đến các khả năng được khuyến nghị để user có thể chọn.)</p>



<p>–&nbsp;<em>301 Moved Permanently:</em>&nbsp;URL của tài nguyên được yêu cầu đã được thay đổi vĩnh viễn. URL mới được đưa ra trong phần phản hồi.</p>



<p>–&nbsp;<em>302 Found:</em>&nbsp;Code phản hồi này có nghĩa là URI của tài nguyên được yêu cầu đã được thay đổi tạm thời. Những thay đổi khác trong URI có thể được thực hiện trong tương lai. Do đó, chính URI này sẽ được client sử dụng trong các yêu cầu trong tương lai.</p>



<p>–&nbsp;<em>303 See Other:</em>&nbsp;Máy chủ gửi phản hồi này để điều hướng client lấy nguồn tài nguyên tại 1 URI khác với 1 yêu cầu GET.</p>



<p>–&nbsp;<em>304 Not Modified:</em>&nbsp;Code này được sử dụng cho mục đích caching. Nó cho client biết rằng phản hồi chưa được điều chỉnh, nên client có thể tiếp tục sử dụng cùng phiên bản phản hồi trong bộ nhớ cache.</p>



<p>–&nbsp;<em>305 Use Proxy:</em>&nbsp;Được xác định trong phiên bản trước của HTTP specification để chỉ ra rằng phản hồi được yêu cầu phải được truy cập bằng proxy. Nó được yêu cầu do quan ngại về phần bảo mật liên quan đến cấu hình trong băng tần của proxy.</p>



<p>–&nbsp;<em>306 unused:</em>&nbsp;Mã phản hồi này không còn được sử dụng nữa, nó được bảo lưu và chỉ được sử dụng trong phiên bản trước của HTTP/1.1 specification.</p>



<p>–&nbsp;<em>307 Temporary Redirect:</em>&nbsp;Máy chủ gửi phản hồi này để điều hướng client tới lấy tài nguyên được yêu cầu tại 1 URI khác với cùng 1 phương thức đã được sử dụng trong yêu cầu trước đó. Code này có cùng ý nghĩa như code phản hồi HTTP 302 Found, ngoại trừ việc user-agent không được thay đổi phương thức HTTP sử dụng: nếu POST được dùng trong yêu cầu đầu tiên, POST phải được sử dụng trong yêu cầu thứ hai.</p>



<p>–&nbsp;<em>308 Permanent Redirect:</em>&nbsp;Điều này có nghĩa là tài nguyên hiện được đặt cố định tại 1 URI khác, được chỉ định bởi header Location: HTTP Response. Code này có cùng ý nghĩa như code phản hồi HTTP&nbsp;<em>301 Moved Permanently</em>, ngoại trừ việc user-agent không được thay đổi phương thức HTTP sử dụng: nếu&nbsp;<em>POST</em>&nbsp;được dùng trong yêu cầu đầu tiên,&nbsp;<em>POST</em>&nbsp;phải được sử dụng trong yêu cầu thứ hai.</p>



<h3 class="wp-block-heading" id="4-client-errors-loi-phia-client">4. Client errors / Lỗi phía client:</h3>



<p>–&nbsp;<em>400 Bad Request:</em>&nbsp;Máy chủ không thể hiểu yêu cầu do cú pháp không hợp lệ.</p>



<p>–&nbsp;<em>401 Unauthorized:</em>&nbsp;Cho dù quy chuẩn HTTP chỉ định “unauthorized” (không có thẩm quyền), nhưng nó có nghĩa phản hồi này là “unauthenticated” (chưa được xác thực). Có nghĩa là, client phải các tự xác thực chính mình để nhận được phản hồi đã yêu cầu.</p>



<p>–&nbsp;<em>402 Payment Required:</em>&nbsp;Code phản hồi này được dành cho những lần sử dụng trong tương lai. Mục đích ban đầu của việc tạo mã này là sử dụng nó cho các hệ thống thanh toán kỹ thuật số, tuy nhiên status code này rất hiếm khi được sử dụng và không tồn tại quy ước tiêu chuẩn nào.</p>



<p>– <em>403 Forbidden:</em> Client không có quyền truy cập vào phần nội dung, nghĩa là nó không được phép, vì vậy máy chủ từ chối cung cấp tài nguyên được yêu cầu. Không giống như 401, danh tính của client đã được máy chủ nhận biết.</p>



<p>– <em>404 Not Found:</em></p>



<p>–&nbsp;<em>405 Method Not Allowed:</em>&nbsp;Phương thức yêu cầu được máy chủ nhận biết nhưng đã bị vô hiệu hóa và không thể sử dụng được. Ví dụ: 1 API có thể cấm XÓA 1 nguồn tài nguyên. 2 phương thức bắt buộc, GET và HEAD, không bao giờ được vô hiệu hóa và không được trả về code lỗi này.</p>



<p>–&nbsp;<em>406 Not Acceptable:</em>&nbsp;Phản hồi này được gửi khi máy chủ web, sau khi thực hiện server-driven content negotiation, không tìm thấy bất kỳ nội dung nào phù hợp với các tiêu chí do user-agent đưa ra.</p>



<p>–&nbsp;<em>407 Proxy Authentication Required:</em>&nbsp;Code này tương tự như 401 nhưng việc xác thực là cần thiết để được thực hiện bởi proxy.</p>



<p>–&nbsp;<em>408 Request Timeout:</em>&nbsp;Phản hồi này được gửi trên 1 kết nối idle bởi 1 số máy chủ, ngay cả khi không có bất kỳ yêu cầu nào trước đó của client. Có nghĩa là máy chủ muốn tắt kết nối không sử dụng này. Phản hồi này được sử dụng nhiều hơn vì 1 số trình duyệt như Chrome, Firefox 27+ hoặc IE9, sử dụng cơ chế&nbsp; tiền kết nối HTTP để tăng tốc độ lướt web. Cũng lưu ý rằng 1 số máy chủ chỉ tắt kết nối luôn mà không hề gửi thông báo này.</p>



<p>–&nbsp;<em>409 Conflict:</em>&nbsp;Phản hồi này được gửi khi 1 yêu cầu xung đột với trạng thái hiện tại của máy chủ.</p>



<p>–&nbsp;<em>410 Gone:</em>&nbsp;Phản hồi này được gửi khi nội dung được yêu cầu đã bị xóa vĩnh viễn khỏi máy chủ, không có địa chỉ chuyển tiếp. Client phải xóa bộ nhớ cache và liên kết của mình tới nguồn tài nguyên. HTTP spectication dự định status code này được sử dụng cho “các dịch vụ khuyến mại, có thời hạn”. Các API không nên bắt buộc phải chỉ ra các tài nguyên đã bị xóa bằng status code này.</p>



<p>–&nbsp;<em>411 Length Required:</em>&nbsp;Máy chủ đã từ chối yêu cầu vì trường header Content-Lenghth không được xác định và máy chủ thì yêu cầu chuyện đó.</p>



<p>–&nbsp;<em>412 Precondition Failed:</em>&nbsp;Client đã chỉ ra các điều kiện tiên quyết trong các header của nó mà máy chủ không đáp ứng được.</p>



<p>–&nbsp;<em>413 Payload Too Large:</em>&nbsp;Thực thể yêu cầu lớn hơn giới hạn do máy chủ xác định, máy chủ có thể đóng kết nối hoặc trả về trường header Retry-After.</p>



<p>–&nbsp;<em>414 URI Too Long:</em>&nbsp;URI được yêu cầu bởi client dài hơn mức máy chủ muốn thông dịch.</p>



<p>–&nbsp;<em>415 Unsupported Media Type:</em>&nbsp;Định dạng phương tiện của dữ liệu được yêu cầu không được máy chủ hỗ trợ, do đó máy chủ đang từ chối yêu cầu.</p>



<p>–&nbsp;<em>416 Range Not Satisfiable:</em>&nbsp;Client yêu cầu một phần của tập tin nhưng máy chủ không thể cung cấp nó. Trước đây được gọi là “Requested Range Not Satisfiable”.</p>



<p>–&nbsp;<em>417 Expectation Failed:</em>&nbsp;Máy chủ không thể đáp ứng các yêu cầu của trường Expect trong header.</p>



<h3 class="wp-block-heading" id="5-server-errors-loi-phia-may-chu">5. Server errors / Lỗi phía máy chủ:</h3>



<p>–&nbsp;<em>500 Internal Server Error:</em>&nbsp;Một thông báo chung, được đưa ra khi máy chủ gặp phải một trường hợp bất ngờ, message cụ thể không phù hợp.</p>



<p>–&nbsp;<em>501 Not Implemented:</em>&nbsp;Máy chủ không công nhận các phương thức yêu cầu hoặc không có khả năng xử lý nó.</p>



<p>–&nbsp;<em>502 Bad Gateway:</em>&nbsp;Máy chủ đã hoạt động như một gateway hoặc proxy và nhận được một phản hồi không hợp lệ từ máy chủ nguồn.</p>



<p>–&nbsp;<em>503 Service Unavailable:</em>&nbsp;Máy chủ hiện tại không có sẵn (hiện đang quá tải hoặc bị down để bảo trì). Đây chỉ là trạng thái tạm thời.</p>



<p>–&nbsp;<em>504 Gateway Timeout:</em>&nbsp;Máy chủ đã hoạt động như một gateway hoặc proxy và không nhận được một phản hồi từ máy chủ nguồn.</p>



<p>–&nbsp;<em>505 HTTP Version Not Supported:</em>&nbsp;Máy chủ không hỗ trợ phiên bản “giao thức HTTP”.</p>



<p><strong>Danh sách được tổng hợp và tham khảo từ&nbsp;<a href="https://www.wikipedia.org/">Wikipedia</a>&nbsp;&amp;&nbsp;<a href="https://www.mozilla.org/vi/">Mozilla</a>.</strong></p>
<p>The post <a href="https://hoangthuc.com/http-status-code-la-gi-danh-sach-day-du-http-status-code/">HTTP status code là gì? Danh sách đầy đủ HTTP status code</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Dữ liệu JSON trong MySQL</title>
		<link>https://hoangthuc.com/du-lieu-json-trong-mysql/</link>
					<comments>https://hoangthuc.com/du-lieu-json-trong-mysql/#comments</comments>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Tue, 12 Jan 2021 09:41:28 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[MYSQL]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=719</guid>

					<description><![CDATA[<p>Bắt đầu từ Mysql 5.7.8, Mysql hỗ trợ kiểu dữ liệu JSON được xác định nghĩa bởi RFC 7159 , cho phép truy cập vào dữ liệu trong các tài liệu JSON (Javascript Notation Object). Các điểm lợi của việc lưu dữ liệu vào cột dạng JSON: Tự động xác thực các dữ liệu dạng JSON Tối [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/du-lieu-json-trong-mysql/">Dữ liệu JSON trong MySQL</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="color: #000000;">Bắt đầu từ Mysql 5.7.8, Mysql hỗ trợ kiểu dữ liệu <strong>JSON</strong> được xác định nghĩa bởi <a style="color: #000000;" href="https://tools.ietf.org/html/rfc7159">RFC 7159</a> , cho phép truy cập vào dữ liệu trong các tài liệu <strong>JSON</strong> (Javascript Notation Object).</span><br />
<span style="color: #000000;">Các điểm lợi của việc lưu dữ liệu vào cột dạng <strong>JSON</strong>:</span></p>
<ul>
<li><span style="color: #000000;">Tự động xác thực các dữ liệu dạng JSON</span></li>
<li><span style="color: #000000;">Tối ưu hoá định dạng lưu trữ</span></li>
<li><span style="color: #000000;">Các hàm trong <strong>SQL</strong> hỗ trợ việc thao tác với dữ liệu cột <strong>JSON</strong> như tạo mới, quản lý hay tìm kiếm</span></li>
<li><span style="color: #000000;">Chuẩn hoá, hợp nhất dữ liệu JSON.</span></li>
</ul>
<h2><strong><span style="color: #000000;">Tạo Dữ Liệu JSON</span></strong></h2>
<p><span style="color: #000000;">Dữ liệu dạng <strong>JSON</strong> có 2 dạng phổ biến là Mảng <strong>JSON(Array Json)</strong> và Đối tượng <strong>JSON(Object Json)</strong>. Mảng Json chứa các giá trị được phân tách với nhau bởi dấu , và được đặt bên trong [ và ] :</span></p>
<pre><pre class="brush: sql; title: ; notranslate">&#x5B;&quot;abc&quot;, 10, null, true, false]</pre>
<p><span style="color: #000000;">Đối tượng Json chứa tập hợp các cặp khoá &#8211; giá trị (key &#8211; value) được phân tách với nhau cũng bởi dấu , và được đặt bên trong { và }:</span></p>
<pre><pre class="brush: xml; title: ; notranslate">{&quot;k1&quot;: &quot;value&quot;, &quot;k2&quot;: 10}</pre>
<p><span style="color: #000000;">Tuy nhiên với nhiều trường hợp phức tạp, dữ liệu <strong>JSON</strong> còn có dạng lồng nhau (Nesting):</span></p>
<pre><pre class="brush: xml; title: ; notranslate">&#x5B;99, {&quot;id&quot;: &quot;HK500&quot;, &quot;cost&quot;: 75.99}, &#x5B;&quot;hot&quot;, &quot;cold&quot;]]
{&quot;k1&quot;: &quot;value&quot;, &quot;k2&quot;: &#x5B;10, 20]}</pre>
<p><span style="color: #000000;">trong mảng <strong>JSON</strong> chứ đối tượng <strong>JSON</strong> và ngược lại.</span></p>
<p><span style="color: #000000;">Thay vì tự đặt ra đối tượng JSON, bạn cũng có thể sử dụng <strong>JSON_OBJECT</strong> chức năng tích hợp.</span></p>
<p><span style="color: #000000;">Các <strong>JSON_OBJECT</strong> chức năng chấp nhận một danh sách các cặp khóa / giá trị theo hình thức <strong>JSON_OBJECT(key1, value1, key2, value2, &#8230; key(n), value(n)) </strong>và trả về một đối tượng JSON.</span></p>
<pre><pre class="brush: sql; title: ; notranslate">/* Let's sell some mobilephones */

INSERT INTO `e_store`.`products`( `name` , `brand_id` , `category_id` , `attributes` )

VALUES( 'Desire' , '2' , '2' ,

JSON_OBJECT( &quot;network&quot; , JSON_ARRAY(&quot;GSM&quot; , &quot;CDMA&quot; , &quot;HSPA&quot; , &quot;EVDO&quot;) ,

&quot;body&quot; ,

&quot;5.11 x 2.59 x 0.46 inches&quot; ,

&quot;weight&quot; ,

&quot;143 grams&quot; ,

&quot;sim&quot; ,

&quot;Micro-SIM&quot; ) );

</pre>
<p><span style="color: #000000;">Một chức năng khác mà chúng ta có thể sử dụng để tạo các đối tượng JSON là <strong>JSON_MERGE</strong> hàm.</span></p>
<p><span style="color: #000000;">Các <strong>JSON_MERGE</strong> chức năng có nhiều đối tượng JSON và tạo ra một, tổng hợp đối tượng duy nhất.</span></p>
<pre><pre class="brush: xml; title: ; notranslate">INSERT INTO `e_store`.`products`( `name` , `brand_id` , `category_id` , `attributes` )

VALUES( 'Explorer' , '3' , '3' ,

JSON_MERGE(

'{&quot;sensor_type&quot;: &quot;CMOS&quot;}' ,

'{&quot;processor&quot;: &quot;Digic DV III&quot;}' ,

'{&quot;scanning_system&quot;: &quot;progressive&quot;}' ,

'{&quot;mount_type&quot;: &quot;PL&quot;}' ,

'{&quot;monitor_type&quot;: &quot;LCD&quot;}'

) );</pre>
<h2><strong><span style="color: #000000;">Thao Tác với Dữ Liệu Cột JSON</span></strong></h2>
<ul>
<li><span style="color: #000000;">Hãy tưởng tượng khi bạn muốn lấy một giá trị nào đó trong một cột dữ liệu <strong>JSON</strong>(ở đây lấy giá trị name):</span></li>
</ul>
<pre><pre class="brush: php; title: ; notranslate"> SELECT JSON_EXTRACT('{&quot;id&quot;: 14, &quot;name&quot;: &quot;Aztalan&quot;}', '$.name');
+---------------------------------------------------------+
| JSON_EXTRACT('{&quot;id&quot;: 14, &quot;name&quot;: &quot;Aztalan&quot;}', '$.name') |
+---------------------------------------------------------+
| &quot;Aztalan&quot;                                               |
+---------------------------------------------------------+
</pre>
<p><span style="color: #000000;">Ở đây <strong>Mysql</strong> cung cấp hàm <strong>JSON_EXTRACT</strong>() giúp trả về dữ liệu từ một tài liệu JSON. Dữ liệu được trả về dựa theo đường dẫn cung cấp, trong ví dụ trên chúng ta thấy đường dẫn ở đây là $.name.</span><br />
<span style="color: #000000;">Tìm hiểu sâu hơn về đường dẫn này nhé: $ là kí tự thể hiện tài liệu JSON đang được xét đến , name chính là tên khoá ta muốn lấy. Tuy nhiên với các dạng dữ liệu <strong>JSON</strong> thì đường dẫn lại khác nhau.</span><br />
<span style="color: #000000;">Với dạng Mảng <strong>JSON </strong>thì đường dẫn có dạng $[n] còn với Đối tượng <strong>JSON </strong>là $.key, n là vị trí giá trị chúng ta muốn lấy trong mảng và key là tên khoá của giá trị chúng ta muốn lấy.</span></p>
<pre><pre class="brush: php; title: ; notranslate"> SELECT JSON_EXTRACT('&#x5B;&quot;abc&quot;, 14, &quot;Aztalan&quot;]', '$&#x5B;0]');
+---------------------------------------------------------+
| JSON_EXTRACT('&#x5B;&quot;abc&quot;, 14, &quot;Aztalan&quot;]', '$&#x5B;0]')          |
+---------------------------------------------------------+
| &quot;abc&quot;                                                   |
+---------------------------------------------------------+
</pre>
<p><span style="color: #000000;">Tuy nhiên với trường hợp dữ liệu dạng lồng nhau thì đường dẫn của chúng ta không đơn giản như vậy. Cùng xem ví dụ sau nhé:</span></p>
<pre><pre class="brush: xml; title: ; notranslate">&#x5B;3, {&quot;a&quot;: &#x5B;5, 6], &quot;b&quot;: 10}, &#x5B;99, 100]]</pre>
<p><span style="color: #000000;">Đây là một mảng <strong>JSON</strong> vậy nếu chúng ta muốn lấy giá trị 3 trong mảng thì đường dẫn sẽ là $[0] (trong một array vị trí đầu tiên sẽ bắt đầu là 0), nhưng nếu chọn lấy giá trị thứ 2 ta sẽ có một đối tượng <strong>JSON </strong>{&#8220;a&#8221;: [5, 6], &#8220;b&#8221;: 10} vậy nếu bài toán đặt ra là muốn lấy giá trị của khoá b trong đối tượng <strong>JSON</strong> này thì ta phải có đường dẫn như nào?. Để lấy giá trị của khoá b ta sẽ có đường dẫn là $[1].b. Với tuỳ trường hợp dạng dữ liệu <strong>JSON</strong> ta sẽ có đường dẫn là $[n].key với dạng mảng lồng object <strong>JSON</strong> và $.key[n] mới dạng object lồng mảng <strong>JSON</strong>.</span></p>
<ul>
<li><span style="color: #000000;">Một số hàm phổ biến được Mysql hỗ trợ như <strong>JSON_SET, JSON_INSERT, JSON_REPLACE hay JSON_REMOVE.</strong></span></li>
</ul>
<pre><pre class="brush: php; title: ; notranslate"> SET @j = '&#x5B;&quot;a&quot;, {&quot;b&quot;: &#x5B;true, false]}, &#x5B;10, 20]]';</pre>
<p><span style="color: #000000;"><strong>JSON_SET</strong> () thay thế các giá trị cho các đường dẫn tồn tại và thêm các giá trị cho các đường dẫn không tồn tại:</span></p>
<pre><pre class="brush: php; title: ; notranslate"> SELECT JSON_SET(@j, '$&#x5B;1].b&#x5B;0]', 1, '$&#x5B;2]&#x5B;2]', 2);
+--------------------------------------------+
| JSON_SET(@j, '$&#x5B;1].b&#x5B;0]', 1, '$&#x5B;2]&#x5B;2]', 2) |
+--------------------------------------------+
| &#x5B;&quot;a&quot;, {&quot;b&quot;: &#x5B;1, false]}, &#x5B;10, 20, 2]]      |
+--------------------------------------------+</pre>
<p><span style="color: #000000;"><strong>JSON_INSERT</strong> () thêm các giá trị mới nhưng không thay thế các giá trị hiện có:</span></p>
<pre><pre class="brush: php; title: ; notranslate"> SELECT JSON_INSERT(@j, '$&#x5B;1].b&#x5B;0]', 1, '$&#x5B;2]&#x5B;2]', 2);
+-----------------------------------------------+
| JSON_INSERT(@j, '$&#x5B;1].b&#x5B;0]', 1, '$&#x5B;2]&#x5B;2]', 2) |
+-----------------------------------------------+
| &#x5B;&quot;a&quot;, {&quot;b&quot;: &#x5B;true, false]}, &#x5B;10, 20, 2]]      |
+-----------------------------------------------+</pre>
<p><span style="color: #000000;"><strong>JSON_REPLACE</strong> () thay thế các giá trị hiện có và bỏ qua các giá trị mới:</span></p>
<pre><pre class="brush: php; title: ; notranslate"> SELECT JSON_REPLACE(@j, '$&#x5B;1].b&#x5B;0]', 1, '$&#x5B;2]&#x5B;2]', 2);
+------------------------------------------------+
| JSON_REPLACE(@j, '$&#x5B;1].b&#x5B;0]', 1, '$&#x5B;2]&#x5B;2]', 2) |
+------------------------------------------------+
| &#x5B;&quot;a&quot;, {&quot;b&quot;: &#x5B;1, false]}, &#x5B;10, 20]]             |
+------------------------------------------------+</pre>
<p><span style="color: #000000;"><strong>JSON_REMOVE</strong> () lấy một tài liệu <strong>JSON</strong> và một hoặc nhiều đường dẫn chỉ định các giá trị sẽ bị xóa khỏi tài liệu. Giá trị trả về là tài liệu gốc trừ đi các giá trị được chọn bởi các đường dẫn tồn tại trong tài liệu:</span></p>
<pre><pre class="brush: php; title: ; notranslate">SELECT JSON_REMOVE(@j, '$&#x5B;2]', '$&#x5B;1].b&#x5B;1]', '$&#x5B;1].b&#x5B;1]');
+---------------------------------------------------+
| JSON_REMOVE(@j, '$&#x5B;2]', '$&#x5B;1].b&#x5B;1]', '$&#x5B;1].b&#x5B;1]') |
+---------------------------------------------------+
| &#x5B;&quot;a&quot;, {&quot;b&quot;: &#x5B;true]}]                              |
+---------------------------------------------------+</pre>
<p>The post <a href="https://hoangthuc.com/du-lieu-json-trong-mysql/">Dữ liệu JSON trong MySQL</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hoangthuc.com/du-lieu-json-trong-mysql/feed/</wfw:commentRss>
			<slash:comments>48</slash:comments>
		
		
			</item>
		<item>
		<title>Cài đặt nhiều phiên bản PHP DirectAdmin</title>
		<link>https://hoangthuc.com/cai-dat-nhieu-phien-ban-php-directadmin/</link>
					<comments>https://hoangthuc.com/cai-dat-nhieu-phien-ban-php-directadmin/#comments</comments>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Sun, 22 Nov 2020 09:50:06 +0000</pubDate>
				<category><![CDATA[DirectAdmin]]></category>
		<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[Vps]]></category>
		<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=681</guid>

					<description><![CDATA[<p>Việc cài cài đặt nhiều phiên bản PHP DirectAdmin sẽ rất giúp ích cho các bạn nếu trên VPS hoặc máy chủ DirectAdmin của bạn chạy nhiều website khác nhau. Tương ứng với điều đó thì nếu cùng xử lý 1 tác vụ mức độ sử dụng CPU của PHP 7.4 cũng thấp hơn 3 lần só [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/cai-dat-nhieu-phien-ban-php-directadmin/">Cài đặt nhiều phiên bản PHP DirectAdmin</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="font-family: tahoma, arial, helvetica, sans-serif;">Việc cài cài đặt nhiều phiên bản PHP DirectAdmin sẽ rất giúp ích cho các bạn nếu trên VPS hoặc máy chủ DirectAdmin của bạn chạy nhiều website khác nhau.</span></p>
<p><span style="font-family: tahoma, arial, helvetica, sans-serif;">Tương ứng với điều đó thì nếu cùng xử lý 1 tác vụ mức độ sử dụng CPU của <strong>PHP 7.4</strong> cũng thấp hơn 3 lần só với <strong>PHP 5.6</strong>.</span></p>
<p><span style="font-family: tahoma, arial, helvetica, sans-serif;"><strong>Điều kiện cài đặt:</strong></span></p>
<p><span style="font-family: tahoma, arial, helvetica, sans-serif;">Điều kiện 1: Yêu cầu phiên bản DirectAdmin phải bằng hoặc lớn hơn <strong>1.50.1</strong></span></p>
<pre class="brush: php; title: ; notranslate">
/usr/local/directadmin/directadmin v
</pre>
<p>Điều kiện 2: Yêu cầu phiên bản Custombuild 2.0 trở lên</p>
<pre class="brush: php; title: ; notranslate">
cd /usr/local/directadmin/custombuild
./build version
</pre>
<p id="ftoc-heading-4" class="ftwp-heading"><span style="font-family: tahoma, arial, helvetica, sans-serif;"><strong>Bật tính năng chạy nhiều phiên bản PHP DirectAdmin</strong></span></p>
<p id="ftoc-heading-5" class="ftwp-heading"><span style="font-family: tahoma, arial, helvetica, sans-serif;">Bước 1: Thiết lập cấu hình các phiên bản PHP các bạn muốn sử dụng</span></p>
<pre class="brush: php; title: ; notranslate">
cd /usr/local/directadmin/custombuild
./build update
./build set php1_release 7.4
./build set php2_release 7.3
./build set php3_release 7.2
./build set php4_release 5.6
</pre>
<p><span style="font-family: tahoma, arial, helvetica, sans-serif;"><strong>Lưu ý:</strong> Nếu bạn đang sử dụng CentOS 6 thì nên dừng lại ở phiên bản PHP 7.3 thôi nhe.</span></p>
<p id="ftoc-heading-6" class="ftwp-heading"><span style="font-family: tahoma, arial, helvetica, sans-serif;">Bước 2: Biên dịch lại toàn bộ các phiên bản PHP</span></p>
<pre class="brush: php; title: ; notranslate">
cd /usr/local/directadmin/custombuild
./build php n
./build rewrite_confs
</pre>
<p><span style="font-family: tahoma, arial, helvetica, sans-serif;">Lưu ý: Quá trình này có thể mất khá nhiều thời gian của bạn. Thời gian dài hoặc ngắn sẽ phụ thuộc vào hiệu năng CPU của VPS hoặc Server của bạn.</span></p>
<p><span style="font-family: tahoma, arial, helvetica, sans-serif;">Bây giờ bạn có thể thay đổi phiên bản PHP của các website trên giao diện DirectAdmin ở “User Level” rồi.</span></p>
<p>&nbsp;</p>
<p>The post <a href="https://hoangthuc.com/cai-dat-nhieu-phien-ban-php-directadmin/">Cài đặt nhiều phiên bản PHP DirectAdmin</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hoangthuc.com/cai-dat-nhieu-phien-ban-php-directadmin/feed/</wfw:commentRss>
			<slash:comments>49</slash:comments>
		
		
			</item>
		<item>
		<title>Backup mã nguồn, files, folders bằng php</title>
		<link>https://hoangthuc.com/backup-ma-nguon-files-folders-bang-php/</link>
					<comments>https://hoangthuc.com/backup-ma-nguon-files-folders-bang-php/#comments</comments>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Thu, 30 Jun 2016 19:41:11 +0000</pubDate>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=443</guid>

					<description><![CDATA[<p>Lý do tôi viết bài này dùng khi trường hợp các bạn muốn backup source website nhưng không có tài khoản host và chỉ có tài khoản FTP. Thông thường chúng ta củng có thể tải source bằng phần mềm thông qua FTP nhưng sẽ có 1 số vấn đề sau đó là: + FTP [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/backup-ma-nguon-files-folders-bang-php/">Backup mã nguồn, files, folders bằng php</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Lý do tôi viết bài này dùng khi trường hợp các bạn muốn backup source website nhưng không có tài khoản host và chỉ có tài khoản FTP. Thông thường chúng ta củng có thể tải source bằng phần mềm thông qua FTP nhưng sẽ có 1 số vấn đề sau đó là:</p>
<p>+ FTP tải từng file nên rất dễ bị mất file hoặc thiếu file.</p>
<p>+ Do mạng. Mạng yếu mà tải bằng FTP thì có tức chết dòm nó load từng file mà muốn đập cái máy (tôi đã từng).</p>
<p>Vô nội dung chính cơ cấu backup sẽ hoạt động như sau:</p>
<p>Đầu tiên các bạn cần tải file backup lên sau đó chạy với đường dẫn đến file đó trên trình duyệt nó sẽ nén source của bạn lại và tải về cho bạn source website dưới dạng file zip. Thế là xong.</p>
<p>Mình đã test trên 1 vài trang và chưa gặp sự cố  nào xãy ra :)))</p>
<p>Source file backup:</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php
if(isset($_POST&#x5B;'folder_zip'])):
$time = (int)$_POST&#x5B;'folder_zip'];
$namezip = 'backup'.time().'.zip';
ini_set('max_execution_time', $time );
$zip = new ZipArchive();
$zip-&gt;open( $namezip , ZipArchive::CREATE | ZipArchive::OVERWRITE);
if ($handle = opendir('.')) {

while (false !== ($entry = readdir($handle))) {

if ($entry != &quot;.&quot; &amp;&amp; $entry != &quot;..&quot; &amp;&amp; !is_dir($entry)) {
$filePath = realpath($entry);
$relativePath = substr($filePath,0 - strlen($entry));
$zip-&gt;addFile($filePath, $relativePath);
}elseif($entry != &quot;.&quot; &amp;&amp; $entry != &quot;..&quot; &amp;&amp; is_dir($entry)){
$rootPath = realpath($entry);
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($rootPath),
RecursiveIteratorIterator::LEAVES_ONLY
);

foreach ($files as $name =&gt; $file)
{
if (!$file-&gt;isDir())
{
$filePath = $file-&gt;getRealPath();
$relativePath = $entry.&quot;\\&quot;.substr($filePath, strlen($rootPath) + 1);
$zip-&gt;addFile($filePath, $relativePath);
}
}

}

}

closedir($handle);
}

$zip-&gt;close();
header('Location:'.$namezip);
endif;
?&gt;
&lt;form action=&quot;&quot; method=&quot;post&quot;&gt;
&lt;input type=&quot;number&quot; name=&quot;folder_zip&quot; value=&quot;&lt;?php // echo $_POST&#x5B;'folder_zip']; ?&gt;&quot;&gt;
&lt;button type=&quot;submit&quot;&gt;Submit&lt;/button&gt;
&lt;/form&gt;

</pre>
<p>Cái này chủ yếu là chức năng nên mình cũng không trang trí gì cho lung linh lắm.</p>
<p>Nếu có thắc mắc hay muốn đóng góp ý kiến thì bình luận bên dưới nhé. Mình rất thích các ý kiến có tính xây dựng.</p>
<p>Chúc các bạn thành công !</p>
<p>The post <a href="https://hoangthuc.com/backup-ma-nguon-files-folders-bang-php/">Backup mã nguồn, files, folders bằng php</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hoangthuc.com/backup-ma-nguon-files-folders-bang-php/feed/</wfw:commentRss>
			<slash:comments>51</slash:comments>
		
		
			</item>
		<item>
		<title>Hàm bỏ dấu tiếng việt trong php</title>
		<link>https://hoangthuc.com/ham-bo-dau-tieng-viet-trong-php/</link>
					<comments>https://hoangthuc.com/ham-bo-dau-tieng-viet-trong-php/#comments</comments>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Sun, 19 Jun 2016 04:53:01 +0000</pubDate>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=438</guid>

					<description><![CDATA[<p>Hàm này chủ yếu dùng để tạo link trong bài viết. Sử dụng hàm preg_replace() trong php. Trong wordpress nó được dùng để tạo slug cho post, pages. Hàm này cũng khá ngắn và dễ sử dụng. function vn_to_str ($str){ $unicode = array( 'a'=&#62;'á&#124;à&#124;ả&#124;ã&#124;ạ&#124;ă&#124;ắ&#124;ặ&#124;ằ&#124;ẳ&#124;ẵ&#124;â&#124;ấ&#124;ầ&#124;ẩ&#124;ẫ&#124;ậ', 'd'=&#62;'đ', 'e'=&#62;'é&#124;è&#124;ẻ&#124;ẽ&#124;ẹ&#124;ê&#124;ế&#124;ề&#124;ể&#124;ễ&#124;ệ', 'i'=&#62;'í&#124;ì&#124;ỉ&#124;ĩ&#124;ị', 'o'=&#62;'ó&#124;ò&#124;ỏ&#124;õ&#124;ọ&#124;ô&#124;ố&#124;ồ&#124;ổ&#124;ỗ&#124;ộ&#124;ơ&#124;ớ&#124;ờ&#124;ở&#124;ỡ&#124;ợ', 'u'=&#62;'ú&#124;ù&#124;ủ&#124;ũ&#124;ụ&#124;ư&#124;ứ&#124;ừ&#124;ử&#124;ữ&#124;ự', 'y'=&#62;'ý&#124;ỳ&#124;ỷ&#124;ỹ&#124;ỵ', 'A'=&#62;'Á&#124;À&#124;Ả&#124;Ã&#124;Ạ&#124;Ă&#124;Ắ&#124;Ặ&#124;Ằ&#124;Ẳ&#124;Ẵ&#124;Â&#124;Ấ&#124;Ầ&#124;Ẩ&#124;Ẫ&#124;Ậ', 'D'=&#62;'Đ', 'E'=&#62;'É&#124;È&#124;Ẻ&#124;Ẽ&#124;Ẹ&#124;Ê&#124;Ế&#124;Ề&#124;Ể&#124;Ễ&#124;Ệ', 'I'=&#62;'Í&#124;Ì&#124;Ỉ&#124;Ĩ&#124;Ị', 'O'=&#62;'Ó&#124;Ò&#124;Ỏ&#124;Õ&#124;Ọ&#124;Ô&#124;Ố&#124;Ồ&#124;Ổ&#124;Ỗ&#124;Ộ&#124;Ơ&#124;Ớ&#124;Ờ&#124;Ở&#124;Ỡ&#124;Ợ', 'U'=&#62;'Ú&#124;Ù&#124;Ủ&#124;Ũ&#124;Ụ&#124;Ư&#124;Ứ&#124;Ừ&#124;Ử&#124;Ữ&#124;Ự', 'Y'=&#62;'Ý&#124;Ỳ&#124;Ỷ&#124;Ỹ&#124;Ỵ', ); [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/ham-bo-dau-tieng-viet-trong-php/">Hàm bỏ dấu tiếng việt trong php</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Hàm này chủ yếu dùng để tạo link trong bài viết. Sử dụng hàm preg_replace() trong php. Trong wordpress nó được dùng để tạo slug cho post, pages. Hàm này cũng khá ngắn và dễ sử dụng.</p>
<pre class="brush: php; title: ; notranslate">

function vn_to_str ($str){

$unicode = array(

'a'=&gt;'á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|ầ|ẩ|ẫ|ậ',

'd'=&gt;'đ',

'e'=&gt;'é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ',

'i'=&gt;'í|ì|ỉ|ĩ|ị',

'o'=&gt;'ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ',

'u'=&gt;'ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự',

'y'=&gt;'ý|ỳ|ỷ|ỹ|ỵ',

'A'=&gt;'Á|À|Ả|Ã|Ạ|Ă|Ắ|Ặ|Ằ|Ẳ|Ẵ|Â|Ấ|Ầ|Ẩ|Ẫ|Ậ',

'D'=&gt;'Đ',

'E'=&gt;'É|È|Ẻ|Ẽ|Ẹ|Ê|Ế|Ề|Ể|Ễ|Ệ',

'I'=&gt;'Í|Ì|Ỉ|Ĩ|Ị',

'O'=&gt;'Ó|Ò|Ỏ|Õ|Ọ|Ô|Ố|Ồ|Ổ|Ỗ|Ộ|Ơ|Ớ|Ờ|Ở|Ỡ|Ợ',

'U'=&gt;'Ú|Ù|Ủ|Ũ|Ụ|Ư|Ứ|Ừ|Ử|Ữ|Ự',

'Y'=&gt;'Ý|Ỳ|Ỷ|Ỹ|Ỵ',

);

foreach($unicode as $nonUnicode=&gt;$uni){

$str = preg_replace(&quot;/($uni)/i&quot;, $nonUnicode, $str);

}
$str = str_replace(' ','_',$str);

return $str;

}

</pre>
<p>Khi sử dụng các bạn chỉ cần gọi ra như sau</p>
<pre class="brush: php; title: ; notranslate">
echo vn_to_str ('Hãy sử dụng tiếng việt có dấu nhé !');
</pre>
<p>Chúc các bạn ngày mới tốt lành !</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a href="https://hoangthuc.com/ham-bo-dau-tieng-viet-trong-php/">Hàm bỏ dấu tiếng việt trong php</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hoangthuc.com/ham-bo-dau-tieng-viet-trong-php/feed/</wfw:commentRss>
			<slash:comments>170</slash:comments>
		
		
			</item>
		<item>
		<title>Tạo đường dẫn chia sẻ URL trên mạng xã hội</title>
		<link>https://hoangthuc.com/tao-duong-dan-chia-se-url-tren-mang-xa-hoi/</link>
					<comments>https://hoangthuc.com/tao-duong-dan-chia-se-url-tren-mang-xa-hoi/#comments</comments>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Fri, 22 Apr 2016 19:12:46 +0000</pubDate>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[Isocial]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=385</guid>

					<description><![CDATA[<p>Nếu bạn là 1 coder và bạn băn khoăn cách tạo 1 đường dẫn để chia sẻ 1 liên kết url từ website của mình trên mạng xã hội như Facebook, Google plus, Twitter, Pinterest thì bạn có thể xem bài viết sau. 1. Facebook Đường dẫn chia sẻ url: https://www.facebook.com/sharer/sharer.php?u= Viết dạng thẻ html : [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/tao-duong-dan-chia-se-url-tren-mang-xa-hoi/">Tạo đường dẫn chia sẻ URL trên mạng xã hội</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Nếu bạn là 1 coder và bạn băn khoăn cách tạo 1 đường dẫn để chia sẻ 1 liên kết url từ website của mình trên mạng xã hội như <strong>Facebook, Google plus, Twitter, Pinterest</strong> thì bạn có thể xem bài viết sau.</p>
<p><strong>1. Facebook</strong></p>
<p>Đường dẫn chia sẻ url: https://www.facebook.com/sharer/sharer.php?u=</p>
<p>Viết dạng thẻ html : &lt;a href=&#8221;https://www.facebook.com/sharer/sharer.php?u=https://hoangthuc.com&#8221;&gt;Share on Facebook&lt;/a&gt;</p>
<p><strong>2.Twitter</strong></p>
<p>Đường dẫn chia sẻ url: https://twitter.com/share?url=</p>
<p>Viết dạng thẻ html : &lt;a href=&#8221;http://twitter.com/share?url=https://hoangthuc.com&#8221;&gt;Share on Twitter&lt;/a&gt;</p>
<p><strong>3.Google Plus</strong></p>
<p>Đường dẫn chia sẻ url: https://plus.google.com/share?url=</p>
<p>Viết dạng thẻ html : &lt;a href=&#8221;https://plus.google.com/share?url=https://hoangthuc.com&#8221;&gt;Share on Google Plus&lt;/a&gt;</p>
<p><strong>4.Pinterest</strong></p>
<p>Đường dẫn chia sẻ url: https://pinterest.com/pin/create/button/?url=</p>
<p>Viết dạng thẻ html : &lt;a href=&#8221;https://pinterest.com/pin/create/button/?url=https://hoangthuc.com&#8221;&gt;Share on Pinterest&lt;/a&gt;</p>
<p><strong>5.Email</strong></p>
<p>Đường dẫn chia sẻ url: mailto:?</p>
<p>Viết dạng thẻ html : &lt;a href=&#8221;mailto:?&#8221;&gt;Send Email&lt;/a&gt;</p>
<p>Note: <em>Các bạn có thể dùng font icon hoặc hình ảnh để thẻ a trong đẹp hơn nhé.</em></p>
<p>Chúc các bạn thành công !</p>
<p>The post <a href="https://hoangthuc.com/tao-duong-dan-chia-se-url-tren-mang-xa-hoi/">Tạo đường dẫn chia sẻ URL trên mạng xã hội</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hoangthuc.com/tao-duong-dan-chia-se-url-tren-mang-xa-hoi/feed/</wfw:commentRss>
			<slash:comments>48</slash:comments>
		
		
			</item>
		<item>
		<title>Sắp xếp phần tử trong mảng php</title>
		<link>https://hoangthuc.com/sap-xep-phan-tu-trong-mang-php/</link>
					<comments>https://hoangthuc.com/sap-xep-phan-tu-trong-mang-php/#comments</comments>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Tue, 19 Jan 2016 09:51:30 +0000</pubDate>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=297</guid>

					<description><![CDATA[<p>Hôm nay mình sẽ làm 1 đoạn code sắp xếp phần tử trong mảng php mà không sử dụng hàm sort trong php. Đầu tiên tìm giá trị nhỏ nhất trong mảng. Thuật toán mình sử dung là so sánh các giá trị liên kề với nhau. function min_array($array){ $t=$array&#x5B;0]; $j=0; for($i=1;$i&#38;lt;count($array);$i++){ if($t&#38;lt;$array&#x5B;$i]){$t= $array&#x5B;$i];$j=$i;$i=1;} } [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/sap-xep-phan-tu-trong-mang-php/">Sắp xếp phần tử trong mảng php</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Hôm nay mình sẽ làm 1 đoạn code sắp xếp phần tử trong mảng php mà không sử dụng hàm sort trong php.</p>
<p>Đầu tiên tìm giá trị nhỏ nhất trong mảng. Thuật toán mình sử dung là so sánh các giá trị liên kề với nhau.</p>
<pre class="brush: php; title: ; notranslate">

function min_array($array){
 $t=$array&#x5B;0];
 $j=0;
 for($i=1;$i&amp;lt;count($array);$i++){
 if($t&amp;lt;$array&#x5B;$i]){$t= $array&#x5B;$i];$j=$i;$i=1;}
 }

return $t;
}

</pre>
<p>Khi bạn đổi toán tử khi so sánh 2 phần tử kề nhau ta sẽ số phần tử giá trị lớn nhất trong mảng.</p>
<pre class="brush: php; title: ; notranslate">&amp;lt;/pre&amp;gt;
&amp;lt;pre&amp;gt; for($i=1;$i&amp;lt;count($array);$i++){
 if($t&amp;lt;$array&#x5B;$i]){$t= $array&#x5B;$i];$j=$i;$i=1;}
 }
</pre>
<p>Sắp xếp tăng dần</p>
<pre class="brush: php; title: ; notranslate">
function sort_array($array){  
 for($i=1;$i&amp;lt;count($array);$i++){
 $j=$array&#x5B;$i];
 $t=$array&#x5B;$i-1];
 if($t&amp;gt;$j){$array&#x5B;$i-1]=$j;$array&#x5B;$i]=$t;$i=0;}
 
 } 
 return $array;
}
&#x5B;php]

Sắp xếp giảm dần
&#x5B;php]
for($i=1;$i&amp;lt;count($array);$i++){
 $j=$array&#x5B;$i];
 $t=$array&#x5B;$i-1];
 if($t&amp;lt;$j){$array&#x5B;$i-1]=$j;$array&#x5B;$i]=$t;$i=0;} 
 } 
</pre>
<p>&nbsp;</p>
<p>The post <a href="https://hoangthuc.com/sap-xep-phan-tu-trong-mang-php/">Sắp xếp phần tử trong mảng php</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hoangthuc.com/sap-xep-phan-tu-trong-mang-php/feed/</wfw:commentRss>
			<slash:comments>49</slash:comments>
		
		
			</item>
		<item>
		<title>Dùng hàm preg_match lấy html từ website khác</title>
		<link>https://hoangthuc.com/dung-ham-preg_match-lay-html-tu-website-khac/</link>
					<comments>https://hoangthuc.com/dung-ham-preg_match-lay-html-tu-website-khac/#comments</comments>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Sat, 19 Dec 2015 09:31:48 +0000</pubDate>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">http://localhost/bloghoangthuc/?p=198</guid>

					<description><![CDATA[<p>Chúng ta sẽ kết hợp với 1 hàm preg_match với hàm file_get_contents. Công dụng 2 hàm này sẽ được sử dụng như sau: file_get_contents : Lấy dữ liệu từ website. preg_match: Lọc html cần lấy. Đầu tiên cần chọn trang đối tượng cần lấy. Ở đây mình sẽ lấy tỷ giá usd &#8211; tỷ giá [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/dung-ham-preg_match-lay-html-tu-website-khac/">Dùng hàm preg_match lấy html từ website khác</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Chúng ta sẽ kết hợp với 1 hàm preg_match với hàm file_get_contents. Công dụng 2 hàm này sẽ được sử dụng như sau:</p>
<p>file_get_contents : Lấy dữ liệu từ website.<br />
preg_match: Lọc html cần lấy.<br />
Đầu tiên cần chọn trang đối tượng cần lấy. Ở đây mình sẽ lấy tỷ giá usd &#8211; tỷ giá ngoại tệ từ website 24h.com.vn link :  http://www.24h.com.vn/ttcb/tygia/tygia.php</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php
$link = &quot;http://hcm.24h.com.vn/ttcb/tygia/tygia.php&quot;;
$html = file_get_contents($link);

$reg = '/class=&quot;tb-giaVang&quot;&gt;(.*?)&lt;/table&gt;/s';
$match = array();
$result = preg_match($reg, $html, $match);            
?&gt;

</pre>
<p>Đoạn code hiển thị</p>
<pre class="brush: xml; title: ; notranslate">

     &lt;div class=&quot;div_Wrapper&quot;&gt;
            &lt;h1&gt;Tỷ giá cập nhật mới nhất&lt;/h1&gt;
              &lt;table class=&quot;tbl_TyGia&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;&gt;
               &lt;?php _e($match&#x5B;1]); ?&gt;
           &lt;/table&gt;
        &lt;/div&gt;

</pre>
<p>Thêm đoạn css cho sinh động :))</p>
<pre class="brush: xml; title: ; notranslate">

&lt;link rel='stylesheet'  href='http://www.24h.com.vn/css/ty_gia-2014.css?v=20140916?ver=20150912' type='text/css' media='all' /&gt;          


</pre>
<p>The post <a href="https://hoangthuc.com/dung-ham-preg_match-lay-html-tu-website-khac/">Dùng hàm preg_match lấy html từ website khác</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hoangthuc.com/dung-ham-preg_match-lay-html-tu-website-khac/feed/</wfw:commentRss>
			<slash:comments>128</slash:comments>
		
		
			</item>
	</channel>
</rss>
