2012-08-29 35 views

Trả lời

13

Làm điều này, điều này thay thế bất cứ điều gì sau ký tự khoảng trắng. Có thể được sử dụng cho dấu gạch ngang:

$str=substr($str, 0, strrpos($str, ' ')); 
+8

Hai vấn đề tiềm năng với điều này: Khi bạn sử dụng 'strrpos() Không gian trắng ', * * cuối cùng được tìm kiếm và bạn có thể kết thúc với các tên như" Hello Nice "cho các chuỗi như" Hello Nice World ". Điểm thứ hai là nó sẽ không trả lại bất cứ điều gì khi không có khoảng trống nào trong tên. Trong khi hành vi này có thể được muốn, nó cũng có thể gây khó chịu. – str

5

Không cần sử dụng regex, chỉ cần sử dụng phương pháp phát nổ.

$item = explode(" ", $x); 
echo $item[0]; //Laura 
+1

Tôi nghĩ bạn cũng có thể đi xa đến mức $ item = explode ("", $ x) [0]; –

-1

$ x = "Laura Smith"; $ temparray = implode ('', $ x); echo $ temparray [0];

Tôi xin lỗi, đôi khi trộn lên implode và phát nổ ...

0

Bạn có thể làm cũng như thế này

$str = preg_split ('/\s/',$x); 
print $str[0]; 
7

Hãy thử điều này

<?php 
$x = "Laura Smith"; 
echo strtok($x, " "); // Laura 
?> 

strtok

0

Phương thức do TheBlackBenzKid cung cấp là hợp lệ cho câu hỏi - howev Khi được trình bày với một đối số không chứa dấu cách, nó sẽ trả về một chuỗi trống.

Mặc dù regexes sẽ tính toán đắt tiền hơn, họ cung cấp flexibiltiy nhiều hơn, ví dụ:

function get_first_word($str) 
{ 
return (preg_match('/(\S)*/', $str, $matches) ? $matches[0] : $str); 
} 
15

Chỉ cần thêm nó vào hỗn hợp, Gần đây tôi đã học được kỹ thuật này:

list($s) = explode(' ',$s); 

tôi chỉ cần làm một điểm chuẩn nhanh chóng, bởi vì tôi đã không đi qua các phương pháp strtok trước, và strtok là 25% nhanh hơn so với giải pháp danh sách/phát nổ của tôi, trên các chuỗi ví dụ nhất định.

Ngoài ra, chuỗi phân cách ban đầu càng dài/hơn, khoảng cách hiệu suất càng lớn. Đưa ra một khối 5000 từ và phát nổ sẽ tạo thành một mảng gồm 5000 phần tử. strtok sẽ chỉ lấy "phần tử" đầu tiên và để phần còn lại trong bộ nhớ dưới dạng một chuỗi.

Vì vậy, strtok thắng cho tôi.

$s = strtok($s,' '); 
+0

Đây phải là câu trả lời được chấp nhận. Cảm ơn bạn đã kiểm tra hiệu suất. – Marcel

0

Câu trả lời này sẽ loại bỏ tất cả mọi thứ sau khi không gian đầu tiên và không phải là cuối cùng như trong trường hợp của chấp nhận answer.Using strpossubstr

$str = "CP hello jldjslf0"; 
$str = substr($str, 0, strpos($str, ' ')); 
echo $str; 
Các vấn đề liên quan