Tôi có một cơ sở dữ liệu có tên và tôi muốn sử dụng thay thế PHP sau không gian trên tên, ví dụ dữ liệu:
$x="Laura Smith";
$y="John. Smith"
$z="John Doe";
Tôi muốn nó trở lại
Laura
John.
John
Carl0s1z
4.6837 Huy hiệu vàng31 Huy hiệu bạc46 Huy hiệu đồng7 gold badges31 silver badges46 bronze badges
Khi được hỏi ngày 29 tháng 8 năm 2012 lúc 12:18Aug 29, 2012 at 12:18
Chỉ để 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];
Mặc dù vậy, tôi chỉ đã thực hiện một điểm chuẩn nhanh chóng, vì tôi đã không xem qua phương thức Strtok trước đây và Strtok nhanh hơn 25% so với giải pháp danh sách/Danh nổ của tôi, trên các chuỗi ví dụ được đưa ra.
Ngoài ra, chuỗi ban đầu càng dài/càng nhiều, khoảng cách hiệu suất càng lớn. Cho một khối 5000 từ và bùng nổ sẽ tạo ra 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ớ làm chuỗi.
Vì vậy, Strtok chiến thắng cho tôi.
$s = strtok[$s,' '];
Đã trả lời ngày 19 tháng 10 năm 2013 lúc 13:18Oct 19, 2013 at 13:18
CodemonKeyCodemonkeyCodemonkey
4.2214 Huy hiệu vàng38 Huy hiệu bạc73 Huy hiệu đồng4 gold badges38 silver badges73 bronze badges
0
Làm điều này, điều này thay thế bất cứ điều gì sau nhân vật không gian. Cũng có thể được sử dụng cho dấu gạch ngang:
$str=substr[$str, 0, strrpos[$str, ' ']];
Đã trả lời ngày 29 tháng 8 năm 2012 lúc 12:19Aug 29, 2012 at 12:19
TheBlackbenzkidtheblackbenzkidTheBlackBenzKid
25.6K39 Huy hiệu vàng139 Huy hiệu bạc207 Huy hiệu đồng39 gold badges139 silver badges207 bronze badges
3
Thử cái này
Strtok
Đã trả lời ngày 29 tháng 8 năm 2012 lúc 12:26Aug 29, 2012 at 12:26
Naveen Kumarnaveen KumarNaveen Kumar
4,4231 Huy hiệu vàng17 Huy hiệu bạc36 Huy hiệu đồng1 gold badge17 silver badges36 bronze badges
Không cần phải sử dụng regex, chỉ cần sử dụng phương thức bùng nổ.
$item = explode[" ", $x];
echo $item[0]; //Laura
Đã trả lời ngày 29 tháng 8 năm 2012 lúc 12:21Aug 29, 2012 at 12:21
OOPBASEOOPBASEoopbase
11K12 Huy hiệu vàng39 Huy hiệu bạc59 Huy hiệu đồng12 gold badges39 silver badges59 bronze badges
1
Phương thức được cung cấp bởi TheBlackBenzKid có giá trị cho câu hỏi - tuy nhiên khi được trình bày với một đối số không chứa khoảng trắng, nó sẽ trả về một chuỗi trống.
Mặc dù regexes sẽ tốn kém hơn về mặt tính toán, nhưng chúng cung cấp rất nhiều flexibiltiy, ví dụ::
function get_first_word[$str]
{
return [preg_match['/[\S]*/', $str, $matches] ? $matches[0] : $str];
}
Đã trả lời ngày 29 tháng 8 năm 2012 lúc 12:29Aug 29, 2012 at 12:29
Symcbeansymcbeansymcbean
47K6 Huy hiệu vàng56 Huy hiệu bạc90 Huy hiệu Đồng6 gold badges56 silver badges90 bronze badges
Câu trả lời này sẽ loại bỏ mọi thứ sau không gian đầu tiên và không phải là câu trả lời cuối cùng như trong trường hợp được chấp nhận. Sử dụng
Laura
John.
John
2 và Laura
John.
John
3$str = "CP hello jldjslf0";
$str = substr[$str, 0, strpos[ $str, ' ']];
echo $str;
Đã trả lời ngày 17 tháng 8 năm 2017 lúc 12:41Aug 17, 2017 at 12:41
Black Mambablack MambaBlack Mamba
Huy hiệu vàng 11.8K673 Huy hiệu bạc98 Huy hiệu đồng6 gold badges73 silver badges98 bronze badges
Có một cuộc gọi chức năng không được đề cập mà tôi luôn sử dụng cho nhiệm vụ chính xác này.
strstr [] với tham số thứ ba của TRUE, sẽ trả về phần phụ trước lần xuất hiện đầu tiên của chuỗi kim.
Mã: [Demo]
$array = [
'x' => 'Laura Smith',
'y' => 'John. Smith',
'z' => 'John Doe'
];
foreach [$array as $key => $value] {
$array[$key] = strstr[$value, ' ', true];
}
var_export[$array];
Output:
Laura
John.
John
0Lưu ý, nếu kim không được tìm thấy trong chuỗi,
Laura
John.
John
4 sẽ trả về Laura
John.
John
5.p.s.
- Bởi vì có các kỹ thuật chức năng đơn để thực hiện nhiệm vụ này, không có lý do thuyết phục nào để sử dụng các kỹ thuật đa chức năng để thực hiện cùng một công việc.there is no compelling reason to use multiple-function techniques to do the same work.
- Bởi vì kim là một chuỗi tĩnh [một không gian] hoàn toàn không có lý do gì để giới thiệu chi phí của một cuộc gọi regex.no reason to introduce the overhead of a regex call.
- Nếu bất cứ ai đang xem xét việc sử dụng
6 để tạo ra một mảng tạm thời thay vì hoạt động "chuỗi trong ra ngoài" trực tiếp hơn nhưLaura John. John
7 hoặcLaura John. John
4, hãy chắc chắn khai báo tham số thứ ba củaLaura John. John
6 + 1 - Bằng cách này, chức năng sẽ ngừng tạo ra các yếu tố mới ngay khi nó đã cô lập bộ nền mà bạn tìm kiếm.declare the third parameter ofLaura John. John
6 using the integer that represents your targeted element's index + 1 -- this way the function will stop making new elements as soon as it has isolated the substring that you seek.Laura John. John
Đã trả lời ngày 13 tháng 4 năm 2020 lúc 22:17Apr 13, 2020 at 22:17
Mickmackusamickmackusamickmackusa
39.2k11 Huy hiệu vàng76 Huy hiệu bạc115 Huy hiệu đồng11 gold badges76 silver badges115 bronze badges
Bạn cũng có thể làm như thế này
Laura
John.
John
1Đã trả lời ngày 29 tháng 8 năm 2012 lúc 12:23Aug 29, 2012 at 12:23