PHP видаляє всі символи перед певним рядком


75

Мені потрібно видалити всі символи з будь-якого рядка до появи цього всередині рядка:

"www/audio"

Не знаю, як я можу це зробити.


Ви можете знайти s($str)->afterFirst('www/audio')або s($str)->afterLast('www/audio')корисно, як знайти в цій окремій бібліотеці .
caw

Відповіді:


159

Ви можете використовувати strstr для цього.

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

31
Коротке зауваження: за допомогою ви можете strstr()повернути частину рядка, яка echo strstr($str, 'www/audio', true);
стоїть

19

Враховуючи

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

Або ви можете використовувати

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

Або

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

рядкові функції, як правило, швидші за масивні функції
будь-хто

3
Вибух - це насправді краща відповідь, оскільки питання стосувалося видалення тексту перед рядком.
Боржовський

explode може спричинити проблеми, якщо у вас було кілька випадків того самого рядка, який ви намагалися видалити - наприклад, "у нас є www / аудіо шлях, де зберігаються файли www / аудіо", це призведе до "шляху, де", якщо ви хочете використовувати explode ви можете зробити щось на зразок foreach ($ expStr як $ key => $ value) echo ($ key == 0? '': 'www / audio'. $ value); або foreach ($ expStr як $ key => $ value) echo ($ key == 0? '': ($ key == 1? '': 'www / audio'). $ value); якщо ви хочете пропустити початковий www / audio.
TheKLF99

2

Я використовую ці функції

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);
        }
    }
}

Це добре працює для декількох випадків одного рядка. Дякую!
davykiash

для вилучення праворуч - з підстроку, щоб отримати повний рядок після першого появи сепаратора
Адітя

0

Для досягнення цієї мети можна використовувати підрядок та strpos .

Ви також можете використовувати регулярний вираз, щоб узгодити лише те, що ви хочете. Ваш пробіг може відрізнятися залежно від того, який із цих підходів має більше сенсу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.