2009-04-23 25 views
9

Làm thế nào tôi có thể cắt chuỗi trước '(' ký hợp đồng với phpCắt chuỗi trước khi một biểu tượng với php

Ví dụ: $ a = "abc Tháng Mười Hai g (vàng)";

Làm thế nào tôi có thể cắt chuỗi trở thành chỉ "abc Tháng Mười Hai g" ??

tôi cố gắng để sử dụng strstr này ($ a, '(', true) nhưng lỗi hiển thị

Trả lời

21

Bạn có thể làm điều này, sử dụng explode:.

list($what_you_want,) = explode('(', $str, 2); 

Hoặc bạn cũng có thể làm điều này, sử dụng substrstrpos:

$what_you_want = substr($str, 0, strpos($str, '(')); 

Lý do bạn đã nhận lỗi sử dụng strstr là bởi vì đối số cuối cùng là không có sẵn trừ khi bạn có PHP 5.3.0 hoặc mới hơn.

+1

Bạn thậm chí không cần biến $ garbage : list ($ what_you_want,) = explode ('(', $ str, 2); cũng vậy. – hbw

+0

thực sự là như vậy. đã sửa. –

+0

Ngoài ra, anh ta nói strstr ($ str, '(', true); không hoạt động, vì vậy tôi cho rằng anh ta không có 5.3.0… – hbw

5
$a=substr($a, 0, strpos($a, '(')); 
1

Sử dụng đoạn mã này thực sự là một giải pháp tốt:

$what_you_want = substr($str, 0, strpos($str, '(')); 

Tuy nhiên, tôi muốn chỉ ra thực tế rằng nó sẽ cắt chuỗi tại sự xuất hiện đầu tiên của "(". bạn shoud muốn cắt nó ở sự xuất hiện cuối cùng của "(", bạn nên sử dụng

$what_you_want = substr($str, 0, strrpos($str, '(')); 

tôi thấy nó là thường xảy ra khi tháo dỡ nội dung html ví dụ (vì thẻ lồng nhau).

Chúc mừng, Joan

2

Làm thế nào về strstr:

$topic = strstr('Some topic :: part to exclude', '::', TRUE);

sau đó

$topic = Một số chủ đề

Edit: đúng ... 5.3+ chỉ

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