2016-05-10 15 views
5

Tôi có một chuỗi nhưtìm ra vị trí của xuất hiện cuối cùng của chuỗi phụ trong một chuỗi với hạn kết thúc index

$string="abc @def @xyz $ @def @xyz"; 

Bây giờ tôi muốn để có được chỉ số lần xuất hiện cuối cùng của @ trước $.

Hiện nay tôi đang sử dụng

strrpos($string,'@'); 

tham số thứ ba của strrpos sẽ được bắt đầu từ chỉ số, chúng tôi có thể cung cấp kết thúc chỉ số?

+0

Một lần nữa, chỉ cần nhận vị trí của ký hiệu '$' cuối cùng làm bù. – Rizier123

+0

nó sẽ xem xét bắt đầu chỉ mục tìm kiếm tôi muốn chỉ mục của @ trước $. –

+0

nếu chuỗi sẽ là ''abc @def @xyz $ @def @xyz $ @bca" '? – RomanPerekhrest

Trả lời

5

Sử dụng strrpos bạn có thể nhận được lần xuất hiện cuối cùng. Thông tin thêm về function.strrpos

Đối với mục đích của bạn, bạn cần phải nổ chuỗi của bạn với $ và khởi động ứng dụng của strrpos cho index đầu tiên của mảng phát nổ.

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

$string="abc @def @xyz $ @def @xyz"; 
$strArr = explode('$', $string); 
$pos = strrpos($strArr[0], "@"); 

if ($pos === false) { // note: three equal signs 
    echo 'Not Found!'; 
}else 
    echo $pos; //Output 9 this case 
+1

Cảm ơn @Frayne. –

2

Một lựa chọn khác: -

$string="abc @def @xyz $ @def @xyz"; 
$pos = strrpos($string, '@', -strrpos($string, '$')); 
if($pos === false){ 
    echo 'Not Found!'; 
}else{ 
    echo $pos; // 9 
} 

Note: - dấu hiệu tiêu cực sẽ trở lại chỉ số cuối cùng '@' trước $ dấu.

+1

Tôi thấy giải pháp này thanh lịch hơn nhiều so với việc giải mã chuỗi đầu tiên – brense

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