У меня есть строка, и я хотел бы получить все после определенного значения. Строка всегда начинается с набора цифр, а затем подчеркивания. Я хотел бы получить оставшуюся часть строки после символа подчеркивания. Так, например, если у меня есть следующие строки и то, что я хотел бы вернуть:
"123_String" -> "String"
"233718_This_is_a_string" -> "This_is_a_string"
"83_Another Example" -> "Another Example"
Как я могу сделать что-то подобное?
if (($pos = strpos($data, "_")) !== FALSE) { $whatIWant = substr($data, $pos+1); }
substr($data, (strrpos($data, '_') ?: -1) +1)
.function StrAfterStr($S, $H) { return (($P = strpos($S, $H)) !== false) ? substr($S, $P + 1) : false; }
strtok
- это упущенная из виду функция для такого рода вещей. Это должно быть довольно быстро.$s = '233718_This_is_a_string'; $firstPart = strtok( $s, '_' ); $allTheRest = strtok( '' );
Такая пустая строка приведет к возврату остальной части строки.
NB, если после '_' ничего не было, вы бы получили
FALSE
значение,$allTheRest
которое, как указано в документации , должно быть проверено с помощью ===, чтобы отличить его от других ложных значений.источник
strtok('a_b', '_')
вернет,a
ноstrtok('_b', '_')
вернетb
, а не пустую строку, как вы ожидалиВот метод с использованием
explode
:$text = explode('_', '233718_This_is_a_string', 2)[1]; // Returns This_is_a_string
или:
$text = @end((explode('_', '233718_This_is_a_string', 2)));
При указании
2
дляlimit
параметраexplode()
, он возвращает массив с 2 -х максимальными элементами , разделенных разделителем строки. Возвращение 2-го элемента ([1]
) даст остальную часть строки.Вот еще один однострочник с использованием
strpos
(как предлагает @flu ):$needle = '233718_This_is_a_string'; $text = substr($needle, (strpos($needle, '_') ?: -1) + 1); // Returns This_is_a_string
источник
если кому-то нужно извлечь первую часть строки, попробуйте,
Запрос:
$s = "This_is_a_string_233718"; $text = $s."_".substr($s, 0, strrpos($s, "_"));
Выход:
This_is_a_string
источник
Другой простой способ, используя strchr () или strstr () :
$str = '233718_This_is_a_string'; echo ltrim(strstr($str, '_'), '_'); // This_is_a_string
источник
$string = "233718_This_is_a_string"; $withCharacter = strstr($string, '_'); // "_This_is_a_string" echo substr($withCharacter, 1); // "This_is_a_string"
В одном заявлении было бы.
echo substr(strstr("233718_This_is_a_string", '_'), 1); // "This_is_a_string"
источник
Я использую strrchr (). Например, чтобы найти расширение файла, я использую эту функцию:
$string = 'filename.jpg'; $extension = strrchr( $string, '.'); //returns ".jpg"
источник