Verification: a143cc29221c9be0

Output php array to string

Замена подстроки

Пример: заменим bbb на zzz:

$str = 'aaa bbb ccc bbb ddd';

$result = str_replace('bbb', 'zzz', $str); 

echo $result; // результат: aaa zzz ccc zzz ddd

Мы заменили "bbb" на "zzz" и в $result запишется строка "aaa zzz ccc zzz ddd". У нас было 2 вхождения подстроки bbb и мы заменили их на zzz.

А что если нам нужно также заменить и ccc на zzz? Мы бы конечно могли запустить функцию 2 раза, в первый раз заменив первую подстроку, а второй раз другую, но можно просто указать массив подстрок поиска первым параметром.

Пример: заменим bbb и ccc на zzz:

$str = 'aaa bbb ccc bbb ddd';

$result = str_replace(['bbb', 'ccc'], 'zzz', $str); 

echo $result; // результат:  aaa zzz zzz zzz ddd

Что если нам нужно заменить bbb на zzz, а ccc на www?

Мы конечно снова можем запустить функцию 2 раза, но оптимальнее с точки зрения производительности будет и вторым параметром передать массив. В первом массиве будут подстроки, которые мы ищем, а во втором те, на которые заменяем.

Пример: заменяем bbb на zzz, а ccc на www:

$str = 'aaa bbb ccc bbb ddd';

$result = str_replace(['bbb', 'ccc'], ['zzz', 'www'], $str); 

echo $result; // результат:  aaa zzz www zzz ddd

Результат у нас правильный, но читабельность конечно страдает. А представьте если бы мы указывали сразу 50 таких строк для замены? И потом когда мы добавляем или заменяем строку, ее приходилось бы искать в 2 местах.

Более читабельным был бы код:

$str = 'aaa bbb ccc bbb ddd';

$replaces = [
    'bbb' => 'zzz',
    'ccc' => 'www',
];

$result = str_replace(array_keys($replaces), array_values($replaces), $str);

echo $result; // результат:  aaa zzz www zzz ddd

Тут нам помогли функции array_keys и array_values которые вернули все ключи и все значения соответственно. Кстати для подобной замены вам не обязательно использовать функцию str_replace, а можно воспользоваться strtr, и тогда наш код выглядел бы еще более просто:

$str = 'aaa bbb ccc bbb ddd';

$result = strtr($str, [
    'bbb' => 'zzz',
    'ccc' => 'www',
]);

echo $result; // результат:  aaa zzz www zzz ddd

У функции str_replace также есть четвертый параметр $count, в котором мы ничего не передаем, а наоборот получаем количество вхождений.

Таким образом если дополнить наш пример:

$str = 'aaa bbb ccc bbb ddd';

$result = str_replace('bbb', 'zzz', $str, $count); 

echo $result; // результат: aaa zzz ccc zzz ddd

echo 'Вхождений: ' . $count; //  Вхождений: 2

Обязательно прочитайте подробную документацию: https://www.php.net/manual/ru/function.str-replace.php

Удаление подстроки

Хоть это и очевидно, давайте проговорим еще момент с удалением строк. Чтобы удалить подстроку нужно просто заменить ее на пустоту (пустую строку).

Удалим xx из нашей строки:

str_replace('xx', '', 'aa xx bb'); // вторым параметром у нас идет пустая строка.

Другие примеры

Рассмотрим еще несколько примеров:

// Порядок замены
$str     = "Строка 1\nСтрока 2\rСтрока 3\r\nСтрока 4\n";
$order   = array("\r\n", "\n", "\r");
$replace = '
'; // Обрабатывает сначала \r\n для избежания их повторной замены. echo $newstr = str_replace($order, $replace, $str); // Выводит F, т.к. A заменяется на B, затем B на C, и так далее... // В итоге E будет заменено F, так как замена происходит слева направо. $search = array('A', 'B', 'C', 'D', 'E'); $replace = array('B', 'C', 'D', 'E', 'F'); $subject = 'A'; echo str_replace($search, $replace, $subject); // Выводит: яблорехкорех орех (по вышеуказанной причине) $letters = array('я', 'о'); $fruit = array('яблоко', 'орех'); $text = 'я о'; $output = str_replace($letters, $fruit, $text); echo $output;

Эта функция не поддерживает регулярные выражения, но для этого есть другая функция: preg_replace()

Более мощная альтернатива: preg_replace

С помощью функции preg_replace вы можете осуществлять замену по регулярном выражению. Если вам не хватает возможностей str_replace, то обратите внимание на эту функцию.

Ссылка на документацию: https://www.php.net/manual/ru/function.preg-replace.php

Синтаксис:

string exec ( string $command [, array &$output [, int &$return_var ]] )

Эта функция может принимать три аргумента. Первый аргумент является обязательным, который примет системную команду. Два других аргумента необязательны. Второй аргумент используется для хранения вывода команды в массиве. Третий аргумент этой функции используется для хранения статуса возврата выполненной команды. Эта функция возвращает последнюю строку из вывода выполненной команды.

Пример-1: Использование функции exec () без дополнительных аргументов

Основное использование функции exec() показано в этом руководстве. Создайте файл PHP со следующим сценарием, чтобы знать, как функция exec() возвращает выходные данные команды. Команда ‘ pwd ‘ использовалась в первой команде exec() скрипта, которая возвращает одну строку вывода. Команда ‘ ls -la ‘ использовалась во второй команде exec(), которая может возвращать несколько строк вывода. Если какая-либо команда возвращает несколько строк, тогда в качестве вывода будет отображаться последняя строка.

 php

// Сохраняем вывод выполненной команды

$output1 =  exec('pwd');

// Распечатать возвращаемое значение

echo $output1; echo "
"; // Сохраняем последнюю строку выполненной команды $output2 = exec('ls -la'); // Распечатать возвращаемое значение echo $ output2; ?>

Вывод :

Следующий вывод появится после запуска вышеуказанного скрипта с сервера. Команда ‘ pwd ‘ возвращает текущий рабочий каталог в виде вывода, который показан в первом выводе. Команда ‘ ls -la ‘ возвращает подробную информацию о списке каталогов, а второй вывод показывает последнюю строку из вывода команды.

Пример-2: Распечатать все значения выполненной команды

В предыдущем примере в функции exec() не использовался необязательный аргумент. В следующем примере показано использование необязательных аргументов функции exec(). Создайте файл PHP со следующим скриптом. В этом скрипте используются два необязательных аргумента exec(). Команда ‘ ls -l ‘ используется в первом аргументе, который возвращает список каталогов. Переменная $ output используется здесь для хранения вывода команды в массиве. Переменная $status используется для хранения возвращаемого значения статуса выполненной команды. Выходные данные команды будут напечатаны как массив, и каждое значение выходного массива будет напечатано с использованием цикла for.

 php

// Сохраняем вывод выполненной команды в массиве

exec ( 'ls -l' , $ output , $ status ) ;


// Вывести все возвращаемые значения выполненной команды в виде массива

print_r ( $ output ) ;

echo "
" ; // Распечатать вывод выполненной команды в каждой строке foreach ( $ output as $ value ) { echo $ value . «
» ; } // Распечатываем статус возврата выполненной команды echo $ status ; ?>

Вывод :

Следующий вывод появится после запуска вышеуказанного скрипта с сервера. Вывод показывает массив, содержащий вывод команды, ls -l и каждое значение массива в каждой строке.

Пример-3: Распечатать все файлы PHP в текущем каталоге

В следующем примере показан список всех файлов PHP в текущем каталоге с помощью функции exec(). Здесь команда ‘ ls -l * .php ‘ используется здесь, чтобы узнать список всех файлов PHP в текущем каталоге. Тег

 используется в скрипте для печати содержимого массива в структурированном формате.
 php

// Сохраняем вывод выполненной команды в массиве

exec ( 'ls -l * .php' , $ output ) ;

// Распечатать вывод выполненной команды

echo "
" ;

print_r ( $ output ) ;

echo "
" ; ?>

Пример-4: Запуск сценария bash

Как любой сценарий bash может быть выполнен с помощью функции exec (), показано в этом примере. Создайте файл bash с именем loop.sh со следующим скриптом, который будет печатать все четные числа от 1 до 20.

loop.sh

#! / bin / bash

# Инициализировать счетчик
 
counter=1
 
# Повторять цикл до тех пор, пока значение $ counter не станет меньше или равно 20,
 
while [ $counter -le 20 ] do
 
# Распечатать четные числа
 
if [[ $counter%2 -eq 0 ]] then
 
# Печатать $counter без перевода строки
 
echo  "$counter" fi

# Увеличить $counter на 1 

((counter++)) 

done

Создайте файл PHP со следующим сценарием для запуска сценария bash. ‘bash loop.sh’ используется в качестве первого аргумента функции exec(), которая будет выполнять файл сценария loop.sh. Цикл ‘foreach‘ используются для печати каждого значения $output с пространством.

 php

// Запускаем скрипт bash

exec('bash loop.sh', $output);

echo "Все четные числа от 1 до 20: 
" ; // Выводим наш вывод с помощью цикла foreach($output as $value) { echo $value."  "; } ?>

Вывод :

Следующий вывод появится после запуска вышеуказанного скрипта с сервера. Вывод показывает все четные числа от 1 до 20.

Пример 5: Запуск команды `dir` с помощью функции exec()

Команда dir работает так же, как и команда ls. В следующем примере показано, как можно выполнить команду dir с помощью сценария PHP. Создайте файл PHP с помощью следующего сценария, который сохраняет вывод команды ‘dir’ в массиве с именем $output и значение состояния в переменной с именем $return. Здесь функция var_dump() используется для печати структуры массива $ output с информацией о типе данных.

 php

// Запускаем команду `dir`

exec("dir", $output, $return);

// Распечатать возвращаемое значение статуса

echo "Возвращаемое значение команды` dir` - $ return \ n ";

echo "
";

// Распечатать команду output

var_dump ( $ output ) ;

echo "
"; ?>

Заключение:

В этой статье были объяснены различные варианты использования функции exec(), чтобы помочь кодировщикам PHP узнать способ выполнения команды оболочки с помощью сценария PHP. Некоторые другие функции также существуют в PHP для выполнения задач того же типа.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Пример-2: Распечатать все значения выполненной команды

В предыдущем примере в функции exec() не использовался необязательный аргумент. В следующем примере показано использование необязательных аргументов функции exec(). Создайте файл PHP со следующим скриптом. В этом скрипте используются два необязательных аргумента exec(). Команда ‘ ls -l ‘ используется в первом аргументе, который возвращает список каталогов. Переменная $ output используется здесь для хранения вывода команды в массиве. Переменная $status используется для хранения возвращаемого значения статуса выполненной команды. Выходные данные команды будут напечатаны как массив, и каждое значение выходного массива будет напечатано с использованием цикла for.

 php

// Сохраняем вывод выполненной команды в массиве

exec ( 'ls -l' , $ output , $ status ) ;


// Вывести все возвращаемые значения выполненной команды в виде массива

print_r ( $ output ) ;

echo "
" ; // Распечатать вывод выполненной команды в каждой строке foreach ( $ output as $ value ) { echo $ value . «
» ; } // Распечатываем статус возврата выполненной команды echo $ status ; ?>

Вывод :

Следующий вывод появится после запуска вышеуказанного скрипта с сервера. Вывод показывает массив, содержащий вывод команды, ls -l и каждое значение массива в каждой строке.

Пример-3: Распечатать все файлы PHP в текущем каталоге

В следующем примере показан список всех файлов PHP в текущем каталоге с помощью функции exec(). Здесь команда ‘ ls -l * .php ‘ используется здесь, чтобы узнать список всех файлов PHP в текущем каталоге. Тег

 используется в скрипте для печати содержимого массива в структурированном формате.
 php

// Сохраняем вывод выполненной команды в массиве

exec ( 'ls -l * .php' , $ output ) ;

// Распечатать вывод выполненной команды

echo "
" ;

print_r ( $ output ) ;

echo "
" ; ?>

Пример-4: Запуск сценария bash

Как любой сценарий bash может быть выполнен с помощью функции exec (), показано в этом примере. Создайте файл bash с именем loop.sh со следующим скриптом, который будет печатать все четные числа от 1 до 20.

loop.sh

#! / bin / bash

# Инициализировать счетчик
 
counter=1
 
# Повторять цикл до тех пор, пока значение $ counter не станет меньше или равно 20,
 
while [ $counter -le 20 ] do
 
# Распечатать четные числа
 
if [[ $counter%2 -eq 0 ]] then
 
# Печатать $counter без перевода строки
 
echo  "$counter" fi

# Увеличить $counter на 1 

((counter++)) 

done

Создайте файл PHP со следующим сценарием для запуска сценария bash. ‘bash loop.sh’ используется в качестве первого аргумента функции exec(), которая будет выполнять файл сценария loop.sh. Цикл ‘foreach‘ используются для печати каждого значения $output с пространством.

 php

// Запускаем скрипт bash

exec('bash loop.sh', $output);

echo "Все четные числа от 1 до 20: 
" ; // Выводим наш вывод с помощью цикла foreach($output as $value) { echo $value."  "; } ?>

Вывод :

Следующий вывод появится после запуска вышеуказанного скрипта с сервера. Вывод показывает все четные числа от 1 до 20.

Пример 5: Запуск команды `dir` с помощью функции exec()

Команда dir работает так же, как и команда ls. В следующем примере показано, как можно выполнить команду dir с помощью сценария PHP. Создайте файл PHP с помощью следующего сценария, который сохраняет вывод команды ‘dir’ в массиве с именем $output и значение состояния в переменной с именем $return. Здесь функция var_dump() используется для печати структуры массива $ output с информацией о типе данных.

 php

// Запускаем команду `dir`

exec("dir", $output, $return);

// Распечатать возвращаемое значение статуса

echo "Возвращаемое значение команды` dir` - $ return \ n ";

echo "
";

// Распечатать команду output

var_dump ( $ output ) ;

echo "
"; ?>

Заключение:

В этой статье были объяснены различные варианты использования функции exec(), чтобы помочь кодировщикам PHP узнать способ выполнения команды оболочки с помощью сценария PHP. Некоторые другие функции также существуют в PHP для выполнения задач того же типа.

Пример-3: Распечатать все файлы PHP в текущем каталоге

В следующем примере показан список всех файлов PHP в текущем каталоге с помощью функции exec(). Здесь команда ‘ ls -l * .php ‘ используется здесь, чтобы узнать список всех файлов PHP в текущем каталоге. Тег

 используется в скрипте для печати содержимого массива в структурированном формате.
 php

// Сохраняем вывод выполненной команды в массиве

exec ( 'ls -l * .php' , $ output ) ;

// Распечатать вывод выполненной команды

echo "
" ;

print_r ( $ output ) ;

echo "
" ; ?>

Пример-4: Запуск сценария bash

Как любой сценарий bash может быть выполнен с помощью функции exec (), показано в этом примере. Создайте файл bash с именем loop.sh со следующим скриптом, который будет печатать все четные числа от 1 до 20.

loop.sh

#! / bin / bash

# Инициализировать счетчик
 
counter=1
 
# Повторять цикл до тех пор, пока значение $ counter не станет меньше или равно 20,
 
while [ $counter -le 20 ] do
 
# Распечатать четные числа
 
if [[ $counter%2 -eq 0 ]] then
 
# Печатать $counter без перевода строки
 
echo  "$counter" fi

# Увеличить $counter на 1 

((counter++)) 

done

Создайте файл PHP со следующим сценарием для запуска сценария bash. ‘bash loop.sh’ используется в качестве первого аргумента функции exec(), которая будет выполнять файл сценария loop.sh. Цикл ‘foreach‘ используются для печати каждого значения $output с пространством.

 php

// Запускаем скрипт bash

exec('bash loop.sh', $output);

echo "Все четные числа от 1 до 20: 
" ; // Выводим наш вывод с помощью цикла foreach($output as $value) { echo $value."  "; } ?>

Вывод :

Следующий вывод появится после запуска вышеуказанного скрипта с сервера. Вывод показывает все четные числа от 1 до 20.

Пример 5: Запуск команды `dir` с помощью функции exec()

Команда dir работает так же, как и команда ls. В следующем примере показано, как можно выполнить команду dir с помощью сценария PHP. Создайте файл PHP с помощью следующего сценария, который сохраняет вывод команды ‘dir’ в массиве с именем $output и значение состояния в переменной с именем $return. Здесь функция var_dump() используется для печати структуры массива $ output с информацией о типе данных.

 php

// Запускаем команду `dir`

exec("dir", $output, $return);

// Распечатать возвращаемое значение статуса

echo "Возвращаемое значение команды` dir` - $ return \ n ";

echo "
";

// Распечатать команду output

var_dump ( $ output ) ;

echo "
"; ?>