Tôi đang cố gắng tách các chuỗi thành một nửa và không được phân tách ở giữa một từ.Tách các chuỗi bằng một nửa (Word-Aware) với PHP
Cho đến nay tôi đã đưa ra những điều sau đây là 99% làm việc:
$text = "The Quick : Brown Fox Jumped Over The Lazy/Dog";
$half = (int)ceil(count($words = str_word_count($text, 1))/2);
$string1 = implode(' ', array_slice($words, 0, $half));
$string2 = implode(' ', array_slice($words, $half));
này không làm việc, đúng tách bất kỳ chuỗi trong nửa theo số từ trong chuỗi. Tuy nhiên, nó là loại bỏ bất kỳ biểu tượng trong chuỗi, ví dụ cho ví dụ trên nó sẽ ra:
The Quick Brown Fox Jumped
Over The Lazy Dog
tôi cần phải giữ tất cả những biểu tượng như: và/trong chuỗi sau khi chia tay. Tôi không hiểu tại sao các mã hiện tại là loại bỏ những biểu tượng ... Nếu bạn có thể cung cấp một phương pháp thay thế hoặc sửa chữa phương pháp này để không loại bỏ các biểu tượng, nó sẽ được đánh giá rất nhiều :)
Cảm ơn, nó chắc chắn có thể hữu ích để chọn xem chuỗi đầu tiên hay chuỗi thứ hai có được từ tách rời hay không. Trong dự án hiện tại của tôi, tôi muốn cung cấp nhiều hơn cho string1 và sử dụng ví dụ 'fox brown fox' ban đầu của bạn, mã của bạn hoạt động như dự định, tuy nhiên việc kiểm tra với các chuỗi khác dường như có kết quả khác nhau, ví dụ '$ text =" ba bốn năm một hai ba bốn năm ";' kết quả trong chuỗi1 là chỉ 'một hai ba bốn'.Trong mọi trường hợp, tôi sẽ trao cho bạn câu trả lời vì mã đầu tiên của bạn thực hiện công việc chính xác như tôi đã hỏi. – Leo44
Thực ra sau khi thử nghiệm thêm, tôi tin rằng mã thứ hai không hoạt động như dự định, trừ khi điểm chính xác của chuỗi là một khoảng trắng. Điều đó có lẽ sẽ không xảy ra thường xuyên vì vậy nó sẽ làm việc tốt :) – Leo44
Đề nghị thay thế để cung cấp cho nhiều hơn để string1: $ giữa = strpos ($ name, '', sàn (strlen ($ name) * 0.5)); – cmc