10/10/2018, 13:31

Giúp ngắt dòng trong php

em đang làm một trang kiểu như lưu bút, nhưng khi hiển thị thì có nhiều dòng người dùng nhập mãi không xuống dòng(người dùng không nhấn enter), em chỉ biết dùng hàm nl2br() để xuống dòng khi gặp enter! em hỏi có cách nào để ngắt dòng trong khoảng ký tự nào đó được không(chẳng hạn mỗi dòng sẽ chỉ giới hạn ở 200 ký tự, nếu quá 200 ký tự thì sẽ tự động xuống dòng)?
mong các pro chỉ giáo
thanks!
langtuquy viết 15:43 ngày 10/10/2018
Bạn đếm và tách chuỗi đầu vào thành các chuỗi giả bằng hàm mb_substr() Hoặc substr() và chèn vào giữa các chuỗi đó một kí tự ngắt dòng. Ví dụ:
<?php
$str = "Xin chào các bạn";
echo mb_substr($str, 0, 8, 'UTF-8') . "<br/>" . mb_substr($str, 9, strlen($str), 'UTF-8'). "<br/>";
?>

Sẽ có kết quả:
Xin chào
các bạn

Chúc bạn thành công!
thuyduongcd viết 15:34 ngày 10/10/2018
Chỉ 2 từ: Thiên tài!
mb_substr($str, 0, 8, 'UTF-8')
Xin hỏi số 8 trong câu đó lấy từ đâu ra vậy? Đâu phải ai cũng nhập vào "Xin chào" hết đâu mà đếm như vậy.

@viethaiabc: Muốn làm được, bạn cần trang bị thuật toán để phân tích đoạn văn Tiếng Việt để biết khi nào là kết thúc đoạn mà chèn vào. Nhưng hình như ít người có đủ khả năng đó.
langtuquy viết 15:39 ngày 10/10/2018
Được gửi bởi viethaiabc
em đang làm một trang kiểu như lưu bút, nhưng khi hiển thị thì có nhiều dòng người dùng nhập mãi không xuống dòng(người dùng không nhấn enter), em chỉ biết dùng hàm nl2br() để xuống dòng khi gặp enter! em hỏi có cách nào để ngắt dòng trong khoảng ký tự nào đó được không?
mong các pro chỉ giáo
thanks!
Được gửi bởi thuyduongcd
Chỉ 2 từ: Thiên tài!

Xin hỏi số 8 trong câu đó lấy từ đâu ra vậy? Đâu phải ai cũng nhập vào "Xin chào" hết đâu mà đếm như vậy.

@viethaiabc: Muốn làm được, bạn cần trang bị thuật toán để phân tích đoạn văn Tiếng Việt để biết khi nào là kết thúc đoạn mà chèn vào. Nhưng hình như ít người có đủ khả năng đó.
Như thế là sai sao? Đoạn code là ví dụ cho câu trả lời còn nếu chỉ biết bắt trước từng kí tự một của code thì đừng học lập trình nữa. Còn nếu muốn giữ nguyên chữ thì không thiếu gì cách để thực hiện. Một trong những cách mà tôi hay sử dụng là kiểm tra vị trí cắt chuỗi là khoảng trắng hay không rồi mới cắt. Nếu là chữ thì công thêm khoảng kí tự từ giá trị truyền vào đến khoảng trắng tiếp theo, đơn giản là vậy thôi. Nhưng trong câu hỏi không nêu ra nên tôi không cần thiết phải trả lời.
nnanh01 viết 15:33 ngày 10/10/2018
Được gửi bởi thuyduongcd
@viethaiabc: Muốn làm được, bạn cần trang bị thuật toán để phân tích đoạn văn Tiếng Việt để biết khi nào là kết thúc đoạn mà chèn vào. Nhưng hình như ít người có đủ khả năng đó.
Thuật toán này....ái chà. tui thì pó tay.
Bác thuyduong nói ít người có khả năng đó nhưng theo tui thì chả có ngừoi nào cả.

"Kết thúc đoạn": Thế nào là kết thúc đoạn để cho chương trình có thể hiểu. Hiện tại không có chương trình nào có thể phân tích đc 1 đoạn văn tiếng Việt cả. Ngay cả quan điểm về đoạn văn của mỗi người còn khác nhau xa hàng vào trăm cây số. Lập trình kiểu gì để biết đâu là kết thúc đoạn.

Ví dụ cụ thể: Đoạn tôi vừa viết ở trên có thể chưa làm 2,3 thậm chí 4 đoạn. Đoạn trên qui nạp cũng không đc, diễn giải cũng không xong, song song hả? vậy thì ngàn câu 1 đoạn cũng đc mà 1 câu 1 đoạn cũng đc.
langtuquy viết 15:48 ngày 10/10/2018
Được gửi bởi nnanh01
Thuật toán này....ái chà. tui thì pó tay.
Bác thuyduong nói ít người có khả năng đó nhưng theo tui thì chả có ngừoi nào cả.

"Kết thúc đoạn": Thế nào là kết thúc đoạn để cho chương trình có thể hiểu. Hiện tại không có chương trình nào có thể phân tích đc 1 đoạn văn tiếng Việt cả. Ngay cả quan điểm về đoạn văn của mỗi người còn khác nhau xa hàng vào trăm cây số. Lập trình kiểu gì để biết đâu là kết thúc đoạn.

Ví dụ cụ thể: Đoạn tôi vừa viết ở trên có thể chưa làm 2,3 thậm chí 4 đoạn. Đoạn trên qui nạp cũng không đc, diễn giải cũng không xong, song song hả? vậy thì ngàn câu 1 đoạn cũng đc mà 1 câu 1 đoạn cũng đc.

Kết thúc đoạn với các chương trình hiện nay chủ yếu dựa vào dấu ".", ",", "\n" nhưng xem ra không đủ. Ngữ pháp tiếng Việt thâm sâu khôn lường
thuyduongcd viết 15:47 ngày 10/10/2018
Thật ra cũng không phải khó lắm, chỉ là ít có công trình nào nghiên cứu về vấn đề này thôi.
Ở mức độ chấp nhận được, đoạn là tập hợp những câu văn có chủ đề liên quan nhau. Nếu có thể phân tích cấu trúc câu để tìm ra chủ đề chính của từng câu, ta có thể gom chúng vào thành một đoạn. Cách này cũng không có độ chính xác lắm nhưng ngay cả người Việt đôi khi còn chưa ngắt đoạn chính xác nữa (thử đếm 10 người Việt thì có được mấy người ngắt đoạn đúng) thì như vậy cũng khá rồi.
Còn việc làm sao phân tích cấu trúc câu? Cái này hình như Google Translate đang cố thực hiện để hình thành những bài dịch chính xác nhất.
guidingstar viết 15:39 ngày 10/10/2018
chả hiểu bạn này muốn làm j...
langtuquy viết 15:33 ngày 10/10/2018
Được gửi bởi thuyduongcd
Thật ra cũng không phải khó lắm, chỉ là ít có công trình nào nghiên cứu về vấn đề này thôi.
Ở mức độ chấp nhận được, đoạn là tập hợp những câu văn có chủ đề liên quan nhau. Nếu có thể phân tích cấu trúc câu để tìm ra chủ đề chính của từng câu, ta có thể gom chúng vào thành một đoạn. Cách này cũng không có độ chính xác lắm nhưng ngay cả người Việt đôi khi còn chưa ngắt đoạn chính xác nữa (thử đếm 10 người Việt thì có được mấy người ngắt đoạn đúng) thì như vậy cũng khá rồi.
Còn việc làm sao phân tích cấu trúc câu? Cái này hình như Google Translate đang cố thực hiện để hình thành những bài dịch chính xác nhất.
Bạn nói nghe thật dễ dàng. Vậy tại sao google nghiên cứu để tách nghĩa của chính tiếng anh (thông dụng nhất) còn bị lỗi. Bạn thử test xem có phải vậy không. Tôi nhớ bài học đầu tiên khi vào học "Vi xử lý" thầy giáo đã nói: "Máy tính không phải là con người. Nó không thông mịnh như con người, bằng chứng là con người tạo ra nó để phục vụ con người. Nhưng chúng ta phải học cách giao tiếp với nó bằng ngôn ngữ của nó. Ngôn ngữ của nó là gì? Đó chính là hai bit 0 và 1...". Vụ này hơi giống Frankenstein, con người tạo ra máy móc, máy móc giết con người và con người lại giết máy móc .
thuyduongcd viết 15:37 ngày 10/10/2018
Thì tôi đã bao giờ nói nó chính xác 100% đâu.
Ngay cả "con người" như cậu mà ngắt đoạn còn chưa chính xác thì làm sao máy có thể ngắt chính xác. Vấn đề là "ở mức độ có thể chấp nhận".
Còn về cái câu thầy giáo bạn nói cũng chưa có gì (hoặc chưa đủ thời gian) để kiểm chứng. Và một điều bạn nên nhớ rằng, máy tính có thể không thông minh như con người nhưng nó lại được tạo ra từ trí thông minh của nhiều người.
Bài liên quan
0