PHP xóa tất cả các ký tự trước chuỗi cụ thể


75

Tôi cần xóa tất cả các ký tự khỏi bất kỳ chuỗi nào trước khi điều này xảy ra bên trong chuỗi:

"www/audio"

Không chắc làm thế nào tôi có thể làm điều này.


Bạn có thể thấy s($str)->afterFirst('www/audio')hoặc s($str)->afterLast('www/audio')hữu ích, như được tìm thấy trong thư viện độc lập này .
caw

Câu trả lời:


159

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

echo strstr($str, 'www/audio');

31
Lưu ý nhanh chóng: bạn có thể sử dụng strstr()để trả lại một phần của chuỗi mà đến trước đối số của nó quá bằng cách gọiecho strstr($str, 'www/audio', true);
CFX

19

Đang cân nhắc

$string="We have www/audio path where the audio files are stored";  //Considering the string like this

Hoặc bạn có thể sử dụng

strstr($string, 'www/audio');

Hoặc là

$expStr=explode("www/audio",$string);
$resultString="www/audio".$expStr[1];

các hàm chuỗi thường nhanh hơn các hàm mảng
Bất kỳ ai

2
Sự bùng nổ trên thực tế là một câu trả lời tốt hơn, vì câu hỏi là về việc xóa văn bản trước chuỗi.
Borjovsky

nổ có thể gây ra sự cố nếu bạn có nhiều lần xuất hiện của cùng một chuỗi mà bạn đang cố gắng xóa - ví dụ: "chúng tôi có đường dẫn www / audio nơi lưu trữ tệp www / audio" sẽ dẫn đến "đường dẫn" nếu bạn muốn sử dụng bùng nổ bạn có thể làm điều gì đó như foreach ($ expStr as $ key => $ value) echo ($ key == 0? '': 'www / audio'. $ value); hoặc foreach ($ expStr as $ key => $ value) echo ($ key == 0? '': ($ key == 1? '': 'www / audio'). $ value); nếu bạn muốn bỏ qua www / audio ban đầu.
TheKLF99

2

Tôi sử dụng chức năng này

function strright($str, $separator) {
    if (intval($separator)) {
        return substr($str, -$separator);
    } elseif ($separator === 0) {
        return $str;
    } else {
        $strpos = strpos($str, $separator);

        if ($strpos === false) {
            return $str;
        } else {
            return substr($str, -$strpos + 1);
        }
    }
}

function strleft($str, $separator) {
    if (intval($separator)) {
        return substr($str, 0, $separator);
    } elseif ($separator === 0) {
        return $str;
    } else {
        $strpos = strpos($str, $separator);

        if ($strpos === false) {
            return $str;
        } else {
            return substr($str, 0, $strpos);
        }
    }
}

Điều này hoạt động tốt cho nhiều lần xuất hiện của cùng một chuỗi. Cảm ơn!
davykiash

để xóa bên phải - khỏi chuỗi con để có chuỗi hoàn chỉnh sau lần xuất hiện đầu tiên của trình phân tách
Aditya

0

Bạn có thể sử dụng chuỗi constrpos để hoàn thành mục tiêu này.

Bạn cũng có thể sử dụng một biểu thức chính quy để chỉ khớp với những gì bạn muốn. Số dặm của bạn có thể thay đổi tùy theo cách tiếp cận nào trong số này có ý nghĩa hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.