2010-05-26 33 views
10

Cách tốt nhất để nhận được 5 từ đầu tiên của một chuỗi là gì? Làm thế nào tôi có thể chia chuỗi thành hai trong một cách mà chuỗi con đầu tiên có 5 chữ đầu tiên trong chuỗi gốc và chuỗi thứ hai cấu thành phần còn lại của chuỗi gốcPHP Cách tốt nhất để có được 5 từ đầu tiên của chuỗi là gì?

+0

Nếu bạn thực sự chỉ muốn * từ *, hãy thử ['s ($ str) -> từ (5)'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/ src/Str.php # L363), như được tìm thấy trong [thư viện độc lập] (https://github.com/delight-im/PHP-Str). – caw

Trả lời

37
$pieces = explode(" ", $inputstring); 
$first_part = implode(" ", array_splice($pieces, 0, 5)); 
$other_part = implode(" ", array_splice($pieces, 5)); 

explode phá vỡ bản gốc chuỗi thành một mảng các từ, array_splice cho phép bạn nhận các phạm vi nhất định của các từ đó và sau đó implode kết hợp các dải ô lại với nhau thành các chuỗi đơn.

+7

Sử dụng 'explode ("", $ inputstring, 6) 'để tiết kiệm khi bạn không cần. – salathe

5
<?php 
$words = explode(" ", $string); 
$first = join(" ", array_slice($words, 0, 5)); 
$rest = join(" ", array_slice($words, 5)); 
+2

'str_split' không làm những gì bạn nghĩ. – Amber

+1

Đồng ý với @Amber, 'str_split' chuyển đổi đối số đầu tiên thành mảng, [nó không có chữ ký giống như được chỉ ra ở đây] (http://php.net/manual/en/function.str-split. php) –

+0

Cảm ơn. Tôi thường nhận được 'str_split' và' explode' trộn lẫn. Sửa lỗi giám sát nhỏ. – Kenaniah

15

Phần sau phụ thuộc rất lớn vào những gì bạn xác định là từ nhưng đó là một cái gật theo một hướng khác, cách xa đồng bằng explode -ing.

$phrase = "All the ancient classic fairy tales have always been scary and dark."; 
echo implode(' ', array_slice(str_word_count($phrase, 2), 0, 5)); 

Cho

Tất cả các cổ tích kinh điển cổ


Một lựa chọn khác, vì tất cả mọi người yêu regex, sẽ là một cái gì đó như:

preg_match('/^(?>\S+\s*){1,5}/', $phrase, $match); 
echo rtrim($match[0]); 
+0

Sau đó là terse. +1 –

+0

điều này làm việc cho tôi, cảm ơn bạn –

0
implode(' ', array_slice(explode(' ', $contents), 0, 5)); 

Lưu ý: ở đây cuối cùng bạn có thể thấy 0, 10 nó sẽ in từ từ bắt đầu đến từ thứ 10, vì vậy bạn có thể sửa khi bạn muốn bắt đầu từ từ thành tổng số từ.

+0

Không đủ tốt để phát nổ không gian. – 4EACH

Các vấn đề liên quan