Поиск…


Извлечение / замена подстрок

Отдельные символы могут быть извлечены с использованием синтаксиса массива (квадратная скобка), а также синтаксиса фигурного скобки. Эти два синтаксиса возвращают только один символ из строки. Если требуется более одного символа, потребуется функция, т. Е. Substr

Строки, как и все в PHP, имеют 0 -индекс.

$foo = 'Hello world';

$foo[6]; // returns 'w'
$foo{6}; // also returns 'w'

substr($foo, 6, 1); // also returns 'w'
substr($foo, 6, 2); // returns 'wo'

Строки также могут быть изменены по одному символу за раз, используя ту же квадратную фигуру и фигурный синтаксис. Для замены более одного символа требуется функция, т. Е. Substr_replace

$foo = 'Hello world';

$foo[6] = 'W'; // results in $foo = 'Hello World'
$foo{6} = 'W'; // also results in $foo = 'Hello World'

substr_replace($foo, 'W', 6, 1); // also results in $foo = 'Hello World'
substr_replace($foo, 'Whi', 6, 2); // results in 'Hello Whirled'
// note that the replacement string need not be the same length as the substring replaced

Строчная интерполяция

Вы также можете использовать интерполяцию для интерполяции ( вставки ) переменной внутри строки. Интерполяция работает в двойных кавычках и только в синтаксисе heredoc.

$name = 'Joel';

// $name will be replaced with `Joel`
echo "<p>Hello $name, Nice to see you.</p>";
#                ↕
#>   "<p>Hello Joel, Nice to see you.</p>"

// Single Quotes: outputs $name as the raw text (without interpreting it)
echo 'Hello $name, Nice to see you.'; # Careful with this notation
#> "Hello $name, Nice to see you."

Сложный (фигурный) синтаксический формат предоставляет еще один параметр, который требует, чтобы вы обернули свою переменную в фигурные скобки {} . Это может быть полезно при вложении переменных в текстовое содержимое и помогающих предотвратить возможную двусмысленность между текстовым контентом и переменными.

$name = 'Joel';

// Example using the curly brace syntax for the variable $name
echo "<p>We need more {$name}s to help us!</p>";
#> "<p>We need more Joels to help us!</p>"

// This line will throw an error (as `$names` is not defined)
echo "<p>We need more $names to help us!</p>";
#> "Notice: Undefined variable: names"

Синтаксис {} только интерполирует переменные, начинающиеся с $ в строку. Синтаксис {} не оценивает произвольные выражения PHP.

// Example tying to interpolate a PHP expression
echo "1 + 2 = {1 + 2}";
#> "1 + 2 = {1 + 2}"

// Example using a constant
define("HELLO_WORLD", "Hello World!!");
echo "My constant is {HELLO_WORLD}";
#> "My constant is {HELLO_WORLD}"

// Example using a function
function say_hello() {
    return "Hello!";
};
echo "I say: {say_hello()}";
#> "I say: {say_hello()}"

Однако синтаксис {} проверяет любой доступ к массиву, доступ к свойствам и вызовы функции / метода для переменных, элементов массива или свойств:

// Example accessing a value from an array — multidimensional access is allowed
$companions = [0 => ['name' => 'Amy Pond'], 1 => ['name' => 'Dave Random']];
echo "The best companion is: {$companions[0]['name']}";
#> "The best companion is: Amy Pond"

// Example of calling a method on an instantiated object
class Person {
  function say_hello() {
    return "Hello!";
  }
}

$max = new Person();

echo "Max says: {$max->say_hello()}";
#> "Max says: Hello!"

// Example of invoking a Closure — the parameter list allows for custom expressions
$greet = function($num) {
    return "A $num greetings!";
};
echo "From us all: {$greet(10 ** 3)}";
#> "From us all: A 1000 greetings!"

Обратите внимание, что знак доллара $ может появиться после открытия фигурной скобки { поскольку приведенные выше примеры или, как в Perl или Shell Script, могут появиться перед ним:

$name = 'Joel';

// Example using the curly brace syntax with dollar sign before the opening curly brace
echo "<p>We need more ${name}s to help us!</p>";
#> "<p>We need more Joels to help us!</p>"

Complex (curly) syntax не называется как таковой, потому что он сложный, а скорее потому, что он позволяет использовать « сложные выражения ». Подробнее о Complex (curly) syntax



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow