Maison  >  Article  >  développement back-end  >  chaîne en php

chaîne en php

韦小宝
韦小宝original
2017-12-01 10:06:033164parcourir

Le type de données de PHP est divisé en huit types de données La chaîne PHP en fait également partie. Aujourd'hui, nous allons l'expliquer en détail PHPChaîne.

Introduction

L'implémentation d'une chaîne en PHP est un tableau d'octets plus un entier indiquant la longueur du tampon. Il n'y a aucune information sur la façon de convertir les octets en caractères ; cela est laissé au programmeur. Il n'y a aucune restriction quant aux valeurs qui composent une chaîne, en particulier, un octet avec une valeur de 0 peut être n'importe où dans la chaîne.

Puisque PHP ne spécifie pas l'encodage des chaînes, comment les chaînes sont-elles encodées ? Par exemple, la chaîne "á" est-elle égale à "xE1" (ISO-8859-1), "xC3xA1" (UTF-8, forme C), "x61xCCx81" (UTF-8, forme D) ou toute autre expression possible ? La réponse est que la chaîne sera codée dans le même codage que le fichier script.

Représentation des chaînes

Les chaînes PHP peuvent être représentées de 4 manières, notamment :

guillemets simples /guillemets doubles/ heredoc/nowdoc

Ces quatre méthodes prennent toutes en charge l'écriture de chaînes sur plusieurs lignes. En même temps, les nouvelles lignes et les espaces dans la chaîne seront conservés dans les caractères tels qu'ils sont, c'est-à-dire le format du code source. sera maintenu. Si vous souhaitez éliminer les sauts de ligne, vous pouvez l'écrire sur une seule ligne et utiliser l'opérateur de concaténation de chaînes.



Les guillemets simples sont simples à utiliser. Lorsque vous utilisez des guillemets simples, il n'y a que deux caractères d'échappement, à savoir ' et \

Si la chaîne est utilisée. contient Sans guillemets doubles, l'utilisation de guillemets simples sera très concise.


Les guillemets doubles prennent en charge davantage de caractères d'échappement, tels que n et t. De plus, les caractères d'échappement prennent également en charge la notation octale, la notation hexadécimale et la notation UTF-8 :

[0-7]{1,3}

x[0- 9A-Fa-f] {1,2}

u{[0-9A-Fa-f]+}


De même, les guillemets doubles représentent Dans la chaîne, des guillemets simples il n'est pas nécessaire d'y échapper.


La chaîne représentée par des guillemets doubles a une autre fonctionnalité importante, à savoir qu'elle analysera les variables de la chaîne :

"Hi, $str."
Une fois que l'analyseur syntaxique rencontre le symbole $, il obtiendra la chaîne entre le symbole $ et le caractère suivant qui n'est pas une lettre anglaise, un chiffre arabe ou un trait de soulignement, et la traitera comme un nom de variable. S'il n'y a pas de variable de ce type dans le programme, elle sera automatiquement ignorée.

Si vous souhaitez afficher le symbole $, vous devez utiliser le caractère d'échappement $



syntaxe hérédoc

Format de syntaxe :

<<

Contenu de la chaîne

str


Notez que la chaîne ci-dessus est a self Un identifiant défini (vous pouvez ajouter des guillemets doubles) pour aider à marquer le début et la fin d'une chaîne. De plus, <<

L'identifiant précisant la fin de la chaîne doit être écrit sur une nouvelle ligne et en partant de la première colonne. Cette ligne ne doit contenir aucun autre caractère, à l'exception éventuellement d'un point-virgule (;). Cela signifie que les identifiants ne peuvent pas être mis en retrait, et qu'il ne peut pas y avoir d'espaces ou de tabulations avant ou après un point-virgule. Plus important encore, l'identifiant de fin doit être précédé d'une nouvelle ligne reconnue par le système d'exploitation local, comme n dans les systèmes UNIX et Mac OS X, et le délimiteur de fin (qui peut être suivi d'un point-virgule) doit également suivre une nouvelle ligne.


La syntaxe heredoc analysera les variables dans la chaîne de la même manière que la notation entre guillemets doubles.

Notez que lorsque les Heredocs incluent une analyse de variables, ils ne peuvent pas être utilisés pour initialiser les attributs de classe.



syntaxe nowdoc

Format de la grammaire :

<<<'str'

Contenu de la chaîne La syntaxe


str


nowdoc est similaire à la syntaxe heredoc, sauf que les identifiants doivent être entourés de guillemets simples. Et la syntaxe nowdoc n'analysera pas les variables dans les chaînes.

<?php  
  $name = "pish";  
  echo <<<&#39;str1&#39;  
My name is $name.<br>  
str1;  
?>

Analyse des variables en chaîne

Le moyen le plus simple est d'écrire directement le nom de la variable, par exemple :

$name = &#39;Ann&#39;;  
$str = "hello $name!";
Cette méthode doit avoir un caractère à la fin du nom de la variable qui ne peut pas être utilisé pour nommer la variable, comme "!" dans l'exemple ci-dessus, à moins bien sûr que la chaîne ne soit terminée.


Si le nom de la variable est suivi d'une lettre ou d'un chiffre, alors la variable ne sera pas analysée correctement car l'analyseur obtiendra $ dès qu'il rencontrera le symbole $. La chaîne entre le symbole et le caractère suivant qui n'est pas une lettre anglaise, un chiffre arabe ou un trait de soulignement est traitée comme un nom de variable. S'il n'y a pas de variable de ce type dans le programme, elle sera automatiquement ignorée.

Une exception concerne les éléments de tableau, qui utilisent ] pour identifier la fin de la variable, il peut donc y avoir d'autres lettres ou chiffres après ].



Si vous souhaitez mieux contrôler le nom de la variable ou utiliser une expression complexe, vous pouvez utiliser {} pour faciliter l'identification.

Remarque :

1.$ et { doivent être proches l'un de l'autre, par exemple : ${ ou {$, sinon les accolades seront analysées comme un caractère ordinaire dans la chaîne.

2. Il doit y avoir un symbole }, sinon une erreur se produira.


3. Si le signe $ est à côté du nom de la variable, il ne doit y avoir aucun espace entre eux.

4.解析数组元素时,只有通过花括号语法才能正确解析带引号的键名

$str = "hello ${name}";  
$str = "hello ${  name  }";  
$str = "hello {$name  }";  
$str = "hello {$  name  }";  // 出错

只使用一层花括号时,无法处理函数或方法的返回值或者类常量以及类静态变量。正确的做法是使用两层花括号:

{${getName()}}            // 函数  
{${$object->getName()}}   // 方法  
{${beers::softdrink}}     // 类常量  
{${beers::$ale}}          // 类变量

下面的例子演示了字符串中的可变变量

$name = &#39;Ann&#39;;  
$Ann = &#39;Jeck&#39;;  
echo "hello {${$name}}"; // hello Jeck  
echo "hello ${$name}";   // hello Jeck  
  
class foo {  
  var $bar = &#39;I am bar.&#39;;  
}  
$foo = new foo();  
$bar = &#39;bar&#39;;  
$baz = array(&#39;foo&#39;, &#39;bar&#39;, &#39;baz&#39;, &#39;quux&#39;);  
echo "{$foo->$bar}\n";          // I am bar.  
echo "{$foo->{$baz[1]}}\n";     // I am bar.

以数组的形式访问字符串

一个字符串可以当成一个可读写的数组进行访问,这时,数组的键固定为0、1、2...

可以使用方括号或花括号来访问字符串中的元素:

$str = "abcdefg";  
$str[0] = "2";  
$str{1} = 3;  
echo var_dump($str);  // string(7) "23cdefg"

注意,用超出字符串长度的下标写入将会拉长该字符串并以空格填充。非整数类型下标会被转换成整数。非法下标类型会产生一个 E_NOTICE 级别错误。用负数下标写入字符串时会产生一个 E_NOTICE 级别错误,用负数下标读取字符串时返回空字符串。写入时只用到了赋值字符串的第一个字符。用空字符串赋值则赋给的值是 NULL 字符。 
PHP 的字符串在内部是字节组成的数组。因此用花括号访问或修改字符串对多字节字符集很不安全。仅应对单字节编码例如 ISO-8859-1 的字符串进行此类操作。

运算符

字符串支持以下这些运算符:

. .=

该运算符用于连接两个字符串:

$str1 = "hello " . "world";  
$str1 .= "!";  
echo $str1;     // hello world!

字符串函数

strlen(str)

返回字符串的长度

$str1 = "abcdefg";  
$str2 = "大家好!";  
echo strlen($str1); // 7  
echo strlen($str2); // 10

以上就是本文的所有内容,希望可以给你带来对字符串的新认识哦~

相关推荐:

最全的php字符串处理函数

php字符串转换为小写的函数strtolower()

几个被人遗忘的PHP字符串处理函数

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn