Связь с администрацией сайта:       

demo

Среди толпы я одинок

Строковая функция PHP: substr_replace - заменяет часть строки

Функция substr_replace в PHP, заменяет часть строки другой подстрокой.
mixed substr_replace ( mixed $string ,  mixed $replacement ,  mixed $start  [, mixed $length ] )
substr_replace() заменяет часть необходимой строки string, начинающуюся с символа с порядковым номером start и (необязательной) длиной length, строкой replacement и возвращает результат.
 
Список параметров:
string - Входная строка.
Есть возможность указать массив строк(к примеру, [‘Hello’, ‘World’,…]). Для такого случая предусмотрена замена для каждой строки в массиве.
И тогда параметры replacement, start и length могут представляться как скалярные(единичные) величины([‘Hello’, ‘World’,…], ‘ello’,0,3) - в этом случае эти значения будут применены к каждой строке, так и массивами - в этом случае соответствующие элементы массивов будут применены к каждой предоставленной строке ([‘Hello’, ‘World’,…], [‘ello’, ‘ld’,…], [0,0,…], [2, 3,…])
replacement
Строка замены.
start
Если start задается положительным числом, то замена начинается с символа с порядковым номером start строки string.
Если start задается отрицательным числом, то замена начинается с символа с порядковым номером start, считая от конца строки string.
Length
Если Length задается положительным числом, то он представляет собой длину заменяемой подстроки в строке string.
 Если Length задается отрицательным числом, то он определяет количество символов от конца строки string, на которых заканчивается замена. Этот аргумент необязателен и по умолчанию равен strlen(string), то есть длине строки и происходит замена до конца строки string.
Подразумевается, если length присвоили ноль, то это тоже самое, что при вставке параметра replacement в строку string на указанной позиции start.
 
Примеры использования функции substr_replace в PHP:
 
Пример #1 Простой пример использования substr_replace()
$str = 'IAMALONE:/RU/';        
echo
"Строка: $str <br /> ";  /* Пример замены строки замены всей строки $str на 'goodBlog'. */
echo
substr_replace($str, ' goodBlog ', 0) . "<br />";
echo
substr_replace($str, ' goodBlog ', 0, strlen($str)) . "<br /><br />";
Результат:
goodBlog
goodBlog
 
 
/* Вставляет 'goodBlog' в начало $str. */

echo substr_replace($str, 'goodBlog', 0, 0) . "<br /><br />";
Результат:
goodBlogIAMALONE:/RU/
 
/* Обе следующих строки заменяют 'RU ' в $str на '.RU'. */

echo substr_replace($str, '.RU', 8, -1) . "<br />";

echo substr_replace($str, '.RU', -5, -1) . "<br /><br />";
Результат: 
IAMALONE.RU/
IAMALONE.RU/
 
/* Удаляет 'RU' из $str. */

echo substr_replace($str, '', 8, -1) . "<br />";
Результат:
IAMALONE/
 
Для следующего, более сложного примера воспользуемся функцией PHP implode.
 
Пример #2 Использование substr_replace() для одновременной множественной замены строк
 

 

$input = array('A: AAA', 'B: AAA', 'C: AAA');
 
// Простой случай: заменяем AAA на BBB в каждой строке.
echo implode('; ', substr_replace($input, 'BBB', 3, 3))."<br />";

Результат: 

A: BBB; B: BBB; C: BBB

 

Пояснение: мы заменяем начиная с 3 символа строки, следующие три символа на BBB в каждой строке массива $input;

 

// Более сложный случай с уникальными заменами. 
$replace = array('AAA', 'BBB', 'CCC');
echo implode('; ', substr_replace($input, $replace, 3, 3)). "<br />";

Результат: 

A: AAA; B: BBB; C: CCC

 

Пояснение: мы заменяем начиная с 3 символа строки, следующие три символа на каждый из элементов массива $replace, соответствующий  каждой строке массива $input;

  

// Замены с разными количествами символов.
$length = array(1, 2, 3);
echo implode('; ', substr_replace($input, $replace, 3, $length)). "<br />";

 

Результат: 

A: AAAAA; B: BBBA; C: CCC

Пояснение: мы заменяем начиная с 3 символа строки, следующие символы из массива $length,  на каждый из элементов массива $replace, соответствующий  каждой строке массива $input;

 

  
 

 

Интересная информация о substr_replace:
- Стоит отметить, что когда start и length отрицательны и длина меньше или равна началу, длина будет иметь значение, равное 0:
 
echo substr_replace('eggs','x',-1,-1)."<br />"; //Результат eggxs 
substr_replace('eggs','x',-1,-2)."<br />";  // Результат  eggxs 
substr_replace('eggs','x',-1,-2)."<br />";  // Результат eggxs 
 

           - функция, которая работает как substr_replace:

 

function putinplace($string=NULL, $put=NULL, $position=false)
{
    $d1=$d2=$i=false;
    $d=array(strlen($string), strlen($put));
    if($position > $d[0]) $position=$d[0];
    for($i=$d[0]; $i >= $position; $i--) $string[$i+$d[1]]=$string[$i];
    for($i=0; $i<$d[1]; $i++) $string[$position+$i]=$put[$i];
    return $string;
}
 
// Explanation
$string='My dog dont love postman'; // строка
$put="'"; // определяем строку вставки как  ' 
$position=10; // количество символом (позиция)
print_r( putinplace($string, $put, $position) );
          Результат: 

My dog don't love postman

 

- функция усечения длинных строк: 

Данная функция приводит к усечению длинной строки в меньшую строку заданной длины при замене средней части разделителем точно посередине.

 

$longString = 'abcdefghijklmnopqrstuvwxyz0123456789z.jpg';
$separator = '/.../';
$separatorlength = strlen($separator) ;
$maxlength = 25 - $separatorlength;
$start = $maxlength / 2 ;
$trunc =  strlen($longString) - $maxlength;
 
echo substr_replace($longString, $separator, $start, $trunc);

Результат:

abcdefghij/.../56789z.jpg

 

 

Rate this item
(1 Vote)
Login to post comments