PHP: Строки - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Массивы Числа с плавающей точкой

Last updated: Sat, 27 Jan 2007

view this page in

# Строки

Строка - это набор символов. В PHP символ это то же самое, что и байт, это значит, что возможно ровно 256 различных символов. Это также означает, что PHP не имеет встроенной поддержки Unicode'а. Некоторую поддержку Unicode'а обеспечивают функции utf8_encode() и utf8_decode().

> Замечание: Нет никаких проблем, если строка очень велика. Практически не существует ограничений на размер строк, налагаемых PHP, так что нет абсолютно никаких причин беспокоиться об их длине.

## Синтаксис

Строка может быть определена тремя различными способами.

- одинарными кавычками

- двойными кавычками

- heredoc-синтаксисом

### Одинарные кавычки

Простейший способ определить строку - это заключить ее в одинарные кавычки (символ `'`).

Чтобы использовать одинарную кавычку внутри строки, как и во многих других языках, ее необходимо предварить символом обратной косой черты (`\`), т. е. экранировать ее. Если обратная косая черта должна идти перед одинарной кавычкой либо быть в конце строки, вам необходимо продублировать ее. Обратите внимание, что если вы попытаетесь экранировать любой другой символ, обратная косая черта также будет напечатана! Так что, как правило, нет необходимости экранировать саму обратную косую черту.

> Замечание: В PHP 3 в данном случае будет выдано сообщение уровня `E_NOTICE`.

> Замечание: В отличие от двух других синтаксисов, переменные и экранирующие последовательности для специальных символов, встречающиеся в строках, заключенных в одинарные кавычки, не обрабатываются.

`<?php
echo 'это простая строка';
echo 'Также вы можете вставлять в строки
символ новой строки таким образом,
поскольку это нормально';
// Выведет: Однажды Арнольд сказал: "I'll be back"
echo 'Однажды Арнольд сказал: "I\'ll be back"';
// Выведет: Вы удалили C:\*.*?
echo 'Вы удалили C:\\*.*?';
// Выведет: Вы удалили C:\*.*?
echo 'Вы удалили C:\*.*?';
// Выведет: Это не вставит: \n новую строку
echo 'Это не вставит: \n новую строку';
// Выведет: Переменные $expand также $either не подставляются
echo 'Переменные $expand также $either не подставляются';
?>`

### Двойные кавычки

Если строка заключена в двойные кавычки ("), PHP распознает большее количество управляющих последовательностей для специальных символов:

Таблица 11-1. Управляющие последовательности

последовательность | значение
--- | ---
`\n` | новая строка (LF или 0x0A (10) в ASCII)
`\r` | возврат каретки (CR или 0x0D (13) в ASCII)
`\t` | горизонтальная табуляция (HT или 0x09 (9) в ASCII)
`\\` | обратная косая черта
`\$` | знак доллара
`\"` | двойная кавычка
`\[0-7]{1,3}` | последовательность символов, соответствующая регулярному выражению, символ в восьмеричной системе счисления
`\x[0-9A-Fa-f]{1,2}` | последовательность символов, соответствующая регулярному выражению, символ в шестнадцатеричной системе счисления

Повторяем, если вы захотите мнемнонизировать любой другой символ, обратная косая черта также будет напечатана!

Но самым важным свойством строк в двойных кавычках является обработка переменных. Смотрите более подробно: обработка строк.

### Heredoc

Другой способ определения строк - это использование heredoc-синтаксиса ("<<<"). После `<<<` необходимо указать идентификатор, затем идет строка, а потом этот же идентификатор, закрывающий вставку.

Закрывающий идентификатор должен начинаться в первом столбце строки. Кроме того, идентификатор должен соответствовать тем же правилам именования, что и все остальные метки в PHP: содержать только буквенно-цифровые символы и знак подчеркивания, и должен начинаться с нецифры или знака подчеркивания.

Внимание

Очень важно отметить, что строка с закрывающим идентификатором не содержит других символов, за исключением, возможно, точки с запятой (`;`). Это означает, что идентификатор не должен вводиться с отступом и что не может быть никаких пробелов или знаков табуляции до или после точки с запятой. Важно также понимать, что первым символом перед закрывающим идентификатором должен быть символ новой строки, определенный в вашей операционной системе. Например, на Macintosh это `\r`.

Если это правило нарушено и закрывающий идентификатор не является "чистым", считается, что закрывающий идентификатор отсутствует и PHP продолжит его поиск дальше. Если в этом случае верный закрывающий идентификатор так и не будет найден, то это вызовет ошибку в обработке с номером строки в конце скрипта.

Heredoc-текст ведет себя так же, как и строка в двойных кавычках, при этом их не имея. Это означает, что вам нет необходимости экранировать кавычки в heredoc, но вы по-прежнему можете использовать вышеперечисленные управляющие последовательности. Переменные обрабатываются, но с применением сложных переменных внутри heredoc нужно быть также внимательным, как и при работе со строками.

Пример 11-2. Пример определения heredoc-строки

`<?php
$str = <<<EOD
Пример строки,
охватывающей несколько строчек,
с использованием heredoc-синтаксиса.
EOD;
/* Более сложный пример с переменными. */
class foo
{
var $foo;
var $bar;
function foo()
{
$this->foo = 'Foo';
$this->bar = array('Bar1', 'Bar2', 'Bar3');
}
}
$foo = new foo();
$name = 'МоеИмя';
echo <<<EOT
Меня зовут "$name". Я печатаю $foo->foo.
Теперь я вывожу {$foo->bar[1]}.
Это должно вывести заглавную букву 'A': \x41
EOT;
?>`

> Замечание: Поддержка heredoc была добавлена в PHP 4.

### Обработка переменных

Если строка определяется в двойных кавычках, либо при помощи heredoc, переменные внутри нее обрабатываются.

Существует два типа синтаксиса: простой и сложный. Простой синтаксис более легок и удобен. Он дает возможность обработки переменной, значения массива (array) или свойства объекта (object).

Сложный синтаксис был введен в PHP 4 и может быть распознан по фигурным скобкам, окружающих выражение.

#### Простой синтаксис

Если интерпретатор встречает знак доллара (`$`), он захватывает так много символов, сколько возможно, чтобы сформировать правильное имя переменной. Если вы хотите точно определить конец имени, заключайте имя переменной в фигурные скобки.

`<?php
$beer = 'Heineken';
echo "$beer's taste is great"; // работает, "'" это неверный символ для имени переменной
echo "He drank some $beers"; // не работает, 's' это верный символ для имени переменной
echo "He drank some ${beer}s"; // работает
echo "He drank some {$beer}s"; // работает
?>`

Точно также могут быть обработаны элемент массива (array) или свойство объекта (object). В индексах массива закрывающая квадратная скобка (`]`) обозначает конец определения индекса. Для свойств объекта применяются те же правила, что и для простых переменных, хотя с ними невозможен трюк, как с переменными.

`<?php
// Эти примеры специфически об использовании массивов внутри
// строк. Вне строк всегда заключайте строковые ключи вашего
// массива в кавычки и не используйте вне строк {скобки}.
// Давайте покажем все ошибки
error_reporting(E_ALL);
$fruits = array('strawberry' => 'red', 'banana' => 'yellow');
// Работает, но заметьте, что вне кавычек строки это работает по-другому
echo "A banana is $fruits[banana].";
//Работает
echo "A banana is {$fruits['banana']}.";
// Работает, но PHP, как описано ниже, сначала ищет
// константу banana.
echo "A banana is {$fruits[banana]}.";
// Не работает, используйте фигурные скобки. Это вызовет ошибку обработки.
echo "A banana is $fruits['banana'].";
// Работает
echo "A banana is " . $fruits['banana'] . ".";
// Работает
echo "This square is $square->width meters broad.";
// Не работает. Для решения см. сложный синтаксис.
echo "This square is $square->width00 centimeters broad.";
?>`

Для чего-либо более сложного вы должны использовать сложный синтаксис.

#### Сложный (фигурный) синтаксис

Он называется сложным не потому, что труден в понимании, а потому что позволяет использовать сложные выражения.

Фактически, вы можете включить любое значение, находящееся в пространстве имени в строке с этим синтаксисом. Вы просто записываете выражение таким же образом, как и вне строки, а затем заключаете его в { и }. Поскольку вы не можете экранировать '{', этот синтаксис будет распознаваться только когда $ следует непосредственно за {. (Используйте "{\$" или "\{$" чтобы отобразить "{$"). Несколько поясняющих примеров:

`<?php
// Давайте покажем все ошибки
error_reporting(E_ALL);
$great = 'fantastic';
// Не работает, выведет: This is { fantastic}
echo "This is { $great}";
// Работает, выведет: This is fantastic
echo "This is {$great}";
echo "This is ${great}";
// Работает
echo "Этот квадрат шириной {$square->width}00 сантиметров.";
// Работает
echo "Это работает: {$arr[4][3]}";
// Это неверно по той же причине, что и $foo[bar] неверно вне
// строки. Другими словами, это по-прежнему будет работать,
// но поскольку PHP сначала ищет константу foo, это вызовет
// ошибку уровня E_NOTICE (неопределенная константа).
echo "Это неправильно: {$arr[foo][3]}";
// Работает. При использовании многомерных массивов, внутри
// строк всегда используйте фигурные скобки
echo "Это работает: {$arr['foo'][3]}";
// Работает.
echo "Это работает: " . $arr['foo'][3];
echo "Вы даже можете записать {$obj->values[3]->name}";
echo "Это значение переменной по имени $name: {${$name}}";
?>`

### Доступ к символу в строке и его изменение

Символы в строках можно использовать и модифицировать, определив их смещение относительно начала строки, начиная с нуля, в фигурных скобках после строки.

> Замечание: Для обеспечения обратной совместимости, вы по-прежнему имеете возможность использовать в тех же целях скобки массива. Однако, начиная с PHP 4, этот синтаксис нежелателен к использованию.

Пример 11-3. Несколько примеров строк

`<?php
// Получение первого символа строки
$str = 'Это тест.';
$first = $str{0};
// Получение третьего символа строки
$third = $str{2};
// Получение последнего символа строки
$str = 'Это все еще тест.';
$last = $str{strlen($str)-1};
// Изменение последнего символа строки
$str = 'Посмотри на море';
$str{strlen($str)-1} = 'я';
?>`

## Полезные функции и операторы

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

Для модификации строк существует множество полезных функций.

Основные функции описаны в разделе строковых функций, функции регулярных выражений для расширенного поиска и замены (в двух частях: Perl и POSIX расширенный).

Также существуют функции для URL-строк, и функции для шифрования/дешифрования строк (mcrypt и mhash).

Наконец, если вы все еще не нашли, что искали, смотрите также функции для символьного типа.

## Преобразование в строку

Вы можете преобразовать значение в строку, используя приведение `(string)`, либо функцию strval(). В выражениях, где необходима строка, преобразование происходит автоматически. Это происходит, когда вы используете функции echo() или print(), либо когда вы сравниваете значение переменной со строкой. Прочтение разделов руководства Типы и Манипуляции с типами сделает следующее более понятным. Смотрите также settype().

Булево (boolean) значение `TRUE` преобразуется в строку `"1"`, а значение `FALSE` представляется как `""` (пустая строка). Этим способом вы можете преобразовывать значения в обе стороны - из булева типа в строковый и наоборот.

Целое (integer) или число с плавающей точкой (float) преобразуется в строку, представленную числом, состоящим из его цифр (включая показатель степени для чисел с плавающей точкой).

Массивы всегда преобразуются в строку `"Array"`, так что вы не можете отобразить содержимое массива (array), используя echo() или print(), чтобы узнать, что он содержит. Чтобы просмотреть один элемент, вам нужно сделать что-то вроде `echo $arr['foo']`. Смотрите ниже советы о том, как отобразить/просмотреть все содержимое.

Объекты всегда преобразуются в строку `"Object"`. Если вы хотите вывести значение переменной-члена объекта (object) с целью отладки, прочтите следующие абзацы. Если вы хотите получить имя класса требуемого объекта, используйте get_class().

Ресурсы всегда преобразуются в строки со структурой `"Resource id #1"`, где `1` - это уникальный номер ресурса (resource), присвоенный ему PHP во время выполнения. Если вы хотите получить тип ресурса, используйте get_resource_type().

`NULL` всегда преобразуется в пустую строку.

Как вы могли видеть выше, вывод массивов, объектов или ресурсов не предоставляет вам никакой полезной информации о самих значениях. Более подходящий способ вывода значений для отладки - использовать функции print_r() и var_dump().

Вы также можете преобразовать значения PHP в строки для постоянного хранения. Этот метод называется сериализацией и может быть выполнен при помощи функции serialize(). Кроме того, если в вашей установке PHP есть поддержка WDDX, вы можете сериализовать значения PHP в структуры XML.

## Преобразование строк в числа

Если строка распознается как числовое значение, результирующее значение и тип определяется так как показано далее.

Строка будет распознана как float, если она содержит любой из символов '.', 'e', или 'E'. Иначе она будет определена как целое.

Значение определяется по начальной части строки. Если строка начинается с верного числового значения, будет использовано это значение. Иначе значением будет 0 (ноль). Верное числовое значение - это одна или более цифр (могущих содержать десятичную точку), по желанию предваренных знаком, с последующим необязательным показателем степени. Показатель степени - это 'e' или 'E' с последующими одной или более цифрами.

`<?php
$foo = 1 + "10.5"; // $foo это float (11.5)
$foo = 1 + "-1.3e3"; // $foo это float (-1299)
$foo = 1 + "bob-1.3e3"; // $foo это integer (1)
$foo = 1 + "bob3"; // $foo это integer (1)
$foo = 1 + "10 Small Pigs"; // $foo это integer (11)
$foo = 4 + "10.2 Little Piggies"; // $foo это float (14.2)
$foo = "10.0 pigs " + 1; // $foo это float (11)
$foo = "10.0 pigs " + 1.0; // $foo это float (11)
?>`

Более подробную информацию об этом преобразовании смотрите в разделе о strtod(3) документации Unix.

Если вы хотите протестировать любой из примеров этого раздела, вы можете скопировать и вставить его и следующую строку, чтобы увидеть, что происходит:

`<?php echo "\$foo==$foo; тип: " . gettype ($foo) . "<br />\n"; ?>`

Не ожидайте получить код символа, преобразовав его в целое (как вы могли бы сделать, например, в C). Для преобразования символов в их коды и обратно используйте функции ord() и chr().

add a note User Contributed Notes
Строки
bryant at zionprogramming dot com
27-Feb-2007 12:16
`As of (at least) PHP 5.2, you can no longer convert an object to a string unless it has a __toString method. Converting an object without this method now gives the error:
PHP Catchable fatal error: Object of class <classname> could not be converted to string in <file> on line <line>
Try this code to get the same results as before:
<?php
if (!is_object($value) || method_exists($value, '__toString')) {
$string = (string)$value;
} else {
$string = 'Object';
}
?>`
fmouse at fmp dot com
21-Feb-2007 10:20
`It may be obvious to some, but it's convenient to note that variables _will_ be expanded inside of single quotes if these occur inside of a double-quoted string. This can be handy in constructing exec calls with complex data to be passed to other programs. e.g.:
$foo = "green";
echo "the grass is $foo";
the grass is green
echo 'the grass is $foo';
the grass is $foo
echo "the grass is '$foo'";
the grass is 'green'`
thomas dot oldbury dot nospam at tgohome dot com
17-Feb-2007 03:33
`This function I created to insert a string at a position or an array of positions. Quite useful.
<?php
/*
string strwpos (string insert, string input, int position [, int mode])
Returns a string with a string inserted at a position,
or an array of positions. Normally, the string is inserted
on the right of the position, but it can be inserted on the
left or both. The following constants define where the string
should be inserted:
INS_LEFT - insert the string left of the position
INS_RIGHT - insert the string right of the position
INS_BOTH - insert the string on both sides
Returns resulting string on success, FALSE on failure.
*/
define('INS_LEFT', 0);
define('INS_RIGHT', 1);
define('INS_BOTH', 2);
function strwpos($ins, $string, $pos, $mode = INS_RIGHT)
{
$str = "";
for($c = 0; $c < strlen($string); $c++)
{
if(is_array($pos))
{
if(in_array($c, $pos, true))
{
if($mode == INS_RIGHT)
{
$ins_c = substr($string, $c, 1) . $ins;
}
elseif($mode == INS_LEFT)
{
$ins_c = $ins . substr($string, $c, 1);
}
elseif($mode == INS_BOTH)
{
$ins_c = $ins . substr($string, $c, 1) . $ins;
}
else
{
trigger_error("Unknown mode '$mode' specified", E_USER_WARNING);
return false;
}
$str .= $ins_c;
}
else
{
$str .= $string[$c];
}
}
else
{
if($c == $pos)
{
if($mode == INS_RIGHT)
{
$ins_c = substr($string, $c, 1) . $ins;
}
elseif($mode == INS_LEFT)
{
$ins_c = $ins . substr($string, $c, 1);
}
elseif($mode == INS_BOTH)
{
$ins_c = $ins . substr($string, $c, 1) . $ins;
}
else
{
trigger_error("Unknown mode '$mode' specified", E_USER_WARNING);
return false;
}
$str .= $ins_c;
}
else
{
$str .= $string[$c];
}
}
}
return $str;
}
?>
This function can have a few problems. For example, the following code will produce an unexpected result:
<?php echo strwpos('love, not ', 'I hate you', 2); ?>
It will produce this result:
I hlove, not ate you
The reason for this is because the string is inserted to the right of the string by default. So using the optional MODE parameter with the INS_LEFT value will produce the result we need.
<?php echo strwpos('love, not ', 'I hate you', 2, INS_LEFT); ?>
This will produce the result we need:
I love, not hate you
You can also use an array of places to insert the string into:
<?php echo strwpos('brown ', 'The quick fox jumped over the lazy dog', array(10, 35), INS_LEFT); ?>
This will produce the result:
The quick brown fox jumped over the lazy brown dog
Hope this helps.`
bishop
28-Mar-2006 12:58
`You may use heredoc syntax to comment out large blocks of code, as follows:
<?php
<<<_EOC
// end-of-line comment will be masked... so will regular PHP:
echo ($test == 'foo' ? 'bar' : 'baz');
/* c-style comment will be masked, as will other heredocs (not using the same marker) */
echo <<<EOHTML
This is text you'll never see!
EOHTML;
function defintion($params) {
echo 'foo';
}
class definition extends nothing {
function definition($param) {
echo 'do nothing';
}
}
how about syntax errors?; = gone, I bet.
_EOC;
?>
Useful for debugging when C-style just won't do. Also useful if you wish to embed Perl-like Plain Old Documentation; extraction between POD markers is left as an exercise for the reader.
Note there is a performance penalty for this method, as PHP must still parse and variable substitute the string.`
adam at obledesign dot com
21-Jan-2006 12:51
`If you really want to get constants inside your string you can do something like this (PHP5 only).
<?php
class GetConstant {
public function __get($constant_name) {
return (defined($constant_name) ? constant($constant_name) : NULL);
}
}
$C = new GetConstant();
define('FOO','bar');
echo("I want a candy {$C->FOO}.");
?>`
csaba at alum dot mit dot edu
31-Dec-2005 03:15
`Multiline strings:
In most of the strings on this doc page, the heredoc form (<<<) is not needed. The heredoc form is useful when you also want to embed, without escaping, quotes of the same type as the starting quote. The single quote form is particularly useful when you want to specify multiline code for future evaluation.
<?php
$code = '
$output = "Mutliline output";
$out = "$output within multiline code:
$ needs escaping within \$out,
and double quotes (\") need escaping within \$out,
but single quotes (\') need escaping everywhere.";
// Next two lines work with php.exe
/* on Windows systems */
$oWSH = new COM("WScript.Shell");
$oWSH->Popup($out, 4, \'IO Demo\', 131120);
';
print "<pre>$code</pre>";
call_user_func (create_function('', $code));
?>
Happy New Year,
Csaba Gabor from Vienna`
wilkinson98 at hotmail dot com
17-Dec-2005 05:53
`You can't depend on hex in strings to be converted.
<?php
// prints 17
echo 1 + '0x10';
// prints 0
echo (int) '0x10';
?>`
webmaster at rephunter dot net
30-Nov-2005 08:57
`Use caution when you need white space at the end of a heredoc. Not only is the mandatory final newline before the terminating symbol stripped, but an immediately preceding newline or space character is also stripped.
For example, in the following, the final space character (indicated by \s -- that is, the "\s" is not literally in the text, but is only used to indicate the space character) is stripped:
$string = <<<EOT
this is a string with a terminating space\s
EOT;
In the following, there will only be a single newline at the end of the string, even though two are shown in the text:
$string = <<<EOT
this is a string that must be
followed by a single newline
EOT;`
DELETETHIS dot php at dfackrell dot mailshell dot com
01-Nov-2005 08:05
`Just some quick observations on variable interpolation:
Because PHP looks for {? to start a complex variable expression in a double-quoted string, you can call object methods, but not class methods or unbound functions.
This works:
<?php
class a {
function b() {
return "World";
}
}
$c = new a;
echo "Hello {$c->b()}.\n"
?>
While this does not:
<?php
function b() {
return "World";
}
echo "Hello {b()}\n";
?>
Also, it appears that you can almost without limitation perform other processing within the argument list, but not outside it. For example:
<?
$true = true;
define("HW", "Hello World");
echo "{$true && HW}";
?>
gives: Parse error: parse error, unexpected T_BOOLEAN_AND, expecting '}' in - on line 3
There may still be some way to kludge the syntax to allow constants and unbound function calls inside a double-quoted string, but it isn't readily apparent to me at the moment, and I'm not sure I'd prefer the workaround over breaking out of the string at this point.`
lelon at lelon dot net
27-Oct-2004 12:01
`You can use the complex syntax to put the value of both object properties AND object methods inside a string. For example...
<?php
class Test {
public $one = 1;
public function two() {
return 2;
}
}
$test = new Test();
echo "foo {$test->one} bar {$test->two()}";
?>
Will output "foo 1 bar 2".
However, you cannot do this for all values in your namespace. Class constants and static properties/methods will not work because the complex syntax looks for the '$'.
<?php
class Test {
const ONE = 1;
}
echo "foo {Test::ONE} bar";
?>
This will output "foo {Test::one} bar". Constants and static properties require you to break up the string.`
Jonathan Lozinski
06-Aug-2004 12:03
`A note on the heredoc stuff.
If you're editing with VI/VIM and possible other syntax highlighting editors, then using certain words is the way forward. if you use <<<HTML for example, then the text will be hightlighted for HTML!!
I just found this out and used sed to alter all EOF to HTML.
JAVASCRIPT also works, and possibly others. The only thing about <<<JAVASCRIPT is that you can't add the <script> tags.., so use HTML instead, which will correctly highlight all JavaScript too..
You can also use EOHTML, EOSQL, and EOJAVASCRIPT.`
www.feisar.de
28-Apr-2004 07:49
`watch out when comparing strings that are numbers. this example:
<?php
$x1 = '111111111111111111';
$x2 = '111111111111111112';
echo ($x1 == $x2) ? "true\n" : "false\n";
?>
will output "true", although the strings are different. With large integer-strings, it seems that PHP compares only the integer values, not the strings. Even strval() will not work here.
To be on the safe side, use:
$x1 === $x2`
atnak at chejz dot com
11-Apr-2004 03:53
`Here is a possible gotcha related to oddness involved with accessing strings by character past the end of the string:
$string = 'a';
var_dump($string[2]); // string(0) ""
var_dump($string[7]); // string(0) ""
$string[7] === ''; // TRUE
It appears that anything past the end of the string gives an empty string.. However, when E_NOTICE is on, the above examples will throw the message:
Notice: Uninitialized string offset: N in FILE on line LINE
This message cannot be specifically masked with @$string[7], as is possible when $string itself is unset.
isset($string[7]); // FALSE
$string[7] === NULL; // FALSE
Even though it seems like a not-NULL value of type string, it is still considered unset.`
dandrake
19-Jan-2004 03:41
`By the way, the example with the "\n" sequence will insert a new line in the html code, while the output will be decided by the HTML syntax. That's why, if you use
<?
echo "Hello \n World";
?>
the browser will receive the HTML code on 2 lines
but his output on the page will be shown on one line only.
To diplay on 2 lines simply use:
<?
echo "Hello <br>World";
?>
like in HTML.`
philip at cornado dot com
11-Apr-2003 05:37
`Note that in PHP versions 4.3.0 and 4.3.1, the following provides a bogus E_NOTICE (this is a known bug):
echo "$somearray['bar']";
This is accessing an array inside a string using a quoted key and no {braces}. Reading the documention shows all the correct ways to do this but the above will output nothing on most systems (most have E_NOTICE off) so users may be confused. In PHP 4.3.2, the above will again yield a parse error.`
03-Mar-2003 10:04
`Regarding "String access by character":
Apparently if you edit a specific character in a string, causing the string to be non-continuous, blank spaces will be added in the empty spots.
echo '<pre>';
$str = '0123';
echo "$str\n";
$str[4] = '4';
echo "$str\n";
$str[6] = '6';
echo "$str\n";
This will output:
0123
01234
01234 6
Notice the blank space where 5 should be.`
vallo at cs dot helsinki dot fi
03-Nov-2002 05:41
`Even if the correct way to handle variables is determined from the context, some things just doesn't work without doing some preparation.
I spent several hours figuring out why I couldn't index a character out of a string after doing some math with it just before. The reason was that PHP thought the string was an integer!
$reference = $base + $userid;
.. looping commands ..
$chartohandle = $reference{$last_char - $i};
Above doesn't work. Reason: last operation with $reference is to store a product of an addition -> integer variable. $reference .=""; (string catenation) had to be added before I got it to work:
$reference = $base + $userid;
$reference .= "";
.. looping commands ..
$chartohandle = $reference{$last_char - $i};
Et voil�! Nice stream of single characters.`
guidod at gmx dot de
22-Jul-2002 11:26
`PHP's double-quoted strings are inherently ill-featured - they will be a problem especially with computed code like in /e-evals with preg_replace.
bash and perl follow the widely accepted rule that all backslashes will escape the nextfollowing char, and nonalpha-chars will always get printed there as themselves whereas (the unescaped chars might have special meaning in regex). Anyway, it is a great way to just escape all nonalpha chars that you uncertain about whether they have special meaning in some places, and ye'll be sure they will get printed literal.
Furthermore, note that \{ sequence is not mentioned in the escape-char table! You'll get to know about it only "complex (curly) syntax". This can even more be a problem with evals, as they behave rather flaky like it _cannot_ be accomodated for computed code. Try all variants of `echo "hello \{\$world}"` removing one or more of the chars in the \{\$ part - have fun!`
philip at cornado dot com
10-Aug-2000 01:38
`A nice "Introduction to PHP Strings" tutorial:
http://www.zend.com/zend/tut/using-strings.php`
add a note
Массивы Числа с плавающей точкой

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 09:32:46 2007 PST