$str = 'HelloWorld'; $sub = substr($str, 3, 5); echo $sub; // prints "loWor"
Я знаю, что substr () принимает первый параметр, второй параметр – индекс начала, а третий параметр – длина подстроки для извлечения. Мне нужно извлечь подстроку с помощью startIndex и endIndex . Мне нужно что-то вроде этого:
$str = 'HelloWorld'; $sub = my_substr_function($str, 3, 5); echo $sub; // prints "lo"
Есть ли функция, которая делает это в php? Или вы можете помочь мне с обходным решением, пожалуйста?
Это просто математика
$sub = substr($str, 3, 5 - 3);
Длина – это конец минус начало.
function my_substr_function($str, $start, $end) { return substr($str, $start, $end - $start); }
Если вам нужно иметь многобилетный сейф (т. Е. Для китайских символов, …), используйте функцию mb_substr:
function my_substr_function($str, $start, $end) { return mb_substr($str, $start, $end - $start); }
Просто вычтите начальный индекс из конечного индекса, и у вас есть длина, которую хочет функция.
$start_index = 3; $end_index = 5; $sub = substr($str, $start_index, $end_index - $start_index);
Вы можете использовать отрицательное значение для третьего параметра:
echo substr('HelloWorld', 3, -5); // will print "lo"
Если длина задана и отрицательна, то многие символы будут опущены в конце строки (после того, как начальная позиция была рассчитана, когда начало отрицательно).
Как указано в документации на подставку .
Не совсем…
Если у нас есть начальный индекс как 0, и мы хотим, чтобы JUST был первым символом, это становится затруднительным, поскольку это не приведет к выходу того, что вы хотите. Поэтому, если вашему коду требуется $ end_index:
// We want just the first char only. $start_index = 0; $end_index = 0; echo $str[$end_index - $start_index]; // One way... or... if($end_index == 0) ++$end_index; $sub = substr($str, $start_index, $end_index - $start_index); echo $sub; // The other way.