为什么这两个正则表达式都成功匹配?
if(preg_match_all('/$^/m',"",$array))
echo "Match";
if(preg_match_all('/$^\n$/m',"\n",$array))
echo "Match";
Run Code Online (Sandbox Code Playgroud) 我想知道windows如何解释字符,例如:
我使用带有3个字节的Hexeditor创建了一个文件E3 81 81.这些字节是"?"编码为UTF-8 的字符.
我打开记事本然后显示出来 "?"
我没有指定文件的编码,我只是创建了字节.并且记事本正确地解释了它.
记事本猜测编码可能是什么?或者是十六进制编辑器使用特定编码保存这些字节.
假设我用UTF-8编码我的文件.
在PHP脚本中,将比较一个字符串:
$string="?";
$string = utf8_encode($string); //Do i need this step?
if(preg_match('/?/u',$string))
//Do if match...
Run Code Online (Sandbox Code Playgroud)
它的字符串真的是没有utf8_encode()函数的UTF-8?如果用UTF-8编码文件,不需要这个功能吗?
我想知道这个逃脱序列.在PHP手册说,\e表示"逃离"那好,我GOOGLE了一下,发现有关ANSI转义序列,我不知道这\e是指他们.
来自维基百科:
ANSI转义序列是嵌入在文本中的字符,用于控制视频文本终端上的格式,颜色和其他输出选项.
但是我无法看到这个转义序列和PHP如何交互.我不知道发布的所有内容是否正确.
有人可以谈论这个话题并展示例子吗?
<head>
<meta charset="ISO-8859-7">
</head>
Run Code Online (Sandbox Code Playgroud)
我一直在使用表单,并看到<meta charset="ISO-8859-7"> 标签编码将在文本区域中键入的文本.事情是用于存储文件的编码方法不是.
我已经看到如果输入的字符不是<meta charset="ISO-8859-7">标签所规定的编码的一部分,则会引用该字符(D;)
我假设表单是从编码speciefied发送字节序列.因为如果我键入一个字符,它将是一个编码将解释的字节.
例如,使用<meta charset="ISO-8859-7">
i在表单中键入字符"¥"
此char不是编码的一部分,但它必须作为它所代表的位置的一个字节发送A5,无论它是否可以表示(这通常由任何编辑器生成).
但不是,表单不会将其作为字节发送,而是引用该字符.
码:
index.php:
<?php header('Content-Type: text/html; charset=ISO-8859-7'); ?>
<head>
<meta charset="ISO-8859-7">
</head>
<form method="post" action="encode.php" accept-charset="ISO-8859-7">
<p><textarea name="input" maxlength="10" rows="5" cols="100"></textarea></p>
<p><button>Submit</button></p>
</form>
Run Code Online (Sandbox Code Playgroud)
encode.php:
<head>
<meta charset="ISO-8859-7"><!-- Useless, Even if is specified the ISO-8859-1 where the "¥" exist, the form sended a reference char rather an a byte to interpret.-->
</head>
<?php
$input=$_POST["input"]; …Run Code Online (Sandbox Code Playgroud) 你知道是否存在一个程序或方法来查看文本,html文件中的(secuences)字节?不是看字符,而是看完整的字节序列.
建议?
来自 Java 规范 SE 7 版
\n\n\xc2\xa73.1 Unicode
\n\n\n\n\n程序是使用 Unicode 字符集编写的。
\n
\xc2\xa73.2词汇翻译
\n\n\n\n\n使用以下三个词汇翻译步骤将原始 Unicode 字符流翻译为\n 标记序列...
\n
我很困惑,因为我用本机字符编码(Windows-1252)编写源代码,并且规范提到(?)全部从原始 Unicode 字符流开始,然后词法翻译(包括 Unicode 转义转换)是执行。
\n\n他们提到 Unicode 转义可用于包含任何使用\仅 ASCII 字符的 Unicode 字符;如果执行了之前的转换,我认为它们引用的是 Unicode 字符集子集中的 ASCII 字符,这是有道理的。
\n\n之前是否有从用于写入源文件的编码到 Unicode 的转换?
\n\n一些相关信息,但我认为这更像是运行时的文本处理,而不是编译过程:
\n\n\n在这个例子中似乎两个字符串"jesus"都是等号(相同的内存位置).
printf("%p\n","jesus");
printf("%p\n","jesus");
Run Code Online (Sandbox Code Playgroud)
另请注意:
printf("%p\n",&"jesus");
printf("%p\n","jesus");
Run Code Online (Sandbox Code Playgroud)
打印相同,但:
char* ptrToString = "jesus";
char* ptrToString = &"jesus"; //ERROR
Run Code Online (Sandbox Code Playgroud)
所以我想知道如何将未分配的字符串存储在内存中以及如何指向它...