[php学习资料] PHP完全自学手册(文档教程)

[复制链接]
 楼主| 发表于 2019-11-19 17:10:32 | 显示全部楼层
PHP 5 SimpleXML 函数
PHP SimpleXML 简介
SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式,只要您知道 XML 文档的布局。
SimpleXML 转换 XML 文档到 SimpleXMLElement 对象。
通过正常的属性选择器和数组迭代器,这个对象能够像其他对象一样被处理。
提示:与 DOM 或者 Expat 解析器比较,SimpleXML 只需要几行代码就能读取元素中的文本数据。

安装
SimpleXML 扩展需要 PHP 5 支持。
自 PHP 5 起,SimpleXML 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。

PHP 5 SimpleXML 函数
函数
描述
__construct()创建一个新的 SimpleXMLElement 对象。
addAttribute()给 SimpleXML 元素添加一个属性。
addChild()给 SimpleXML 元素添加一个子元素。
asXML()格式化 XML(版本 1.0)中的 SimpleXML 对象的数据。
attributes()返回 XML 标签的属性和值。
children()查找指定节点的子节点。
count()计算指定节点的子节点个数。
getDocNamespaces()返回文档中的声明的命名空间。
getName()返回 SimpleXML 元素引用的 XML 标签的名称。
getNamespaces()返回文档中使用的命名空间。
registerXPathNamespace()为下一个 XPath 查询创建命名空间上下文。
saveXML()asXML() 的别名。
simplexml_import_dom()从 DOM 节点返回 SimpleXMLElement 对象。
simplexml_load_file()转换 XML 文件为 SimpleXMLElement 对象。
simplexml_load_string()转换 XML 字符串为 SimpleXMLElement 对象。
xpath()运行对 XML 数据的 XPath 查询。
PHP 5 SimpleXML 迭代函数
函数
描述
current()返回当前元素。
getChildren()返回当前元素的子元素。
hasChildren()检查当前元素是否有子元素。
key()返回当前键。
next()移动到下一个元素。
rewind()倒回到第一个元素。
valid()检查当前元素是否有效。


腾讯云
回复

使用道具 举报

 楼主| 发表于 2019-11-19 17:11:03 | 显示全部楼层
PHP 5 String 函数
PHP 5 String 函数
PHP String 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。

函数
描述
addcslashes()返回在指定的字符前添加反斜杠的字符串。
addslashes()返回在预定义的字符前添加反斜杠的字符串。
bin2hex()把 ASCII 字符的字符串转换为十六进制值。
chop()移除字符串右侧的空白字符或其他字符。
chr()从指定 ASCII 值返回字符。
chunk_split()把字符串分割为一连串更小的部分。
convert_cyr_string()把字符串由一种 Cyrillic 字符集转换成另一种。
convert_uudecode()对 uuencode 编码的字符串进行解码。
convert_uuencode()使用 uuencode 算法对字符串进行编码。
count_chars()返回字符串所用字符的信息。
crc32()计算一个字符串的 32 位 CRC(循环冗余校验)。
crypt()单向的字符串加密法(hashing)。
echo()输出一个或多个字符串。
explode()把字符串打散为数组。
fprintf()把格式化的字符串写入到指定的输出流。
get_html_translation_table()返回 htmlspecialchars() 和 htmlentities() 使用的翻译表。
hebrev()把希伯来(Hebrew)文本转换为可见文本。
hebrevc()把希伯来(Hebrew)文本转换为可见文本,并把新行(\n)转换为 <br>。
hex2bin()把十六进制值的字符串转换为 ASCII 字符。
html_entity_decode()把 HTML 实体转换为字符。
htmlentities()把字符转换为 HTML 实体。
htmlspecialchars_decode()把一些预定义的 HTML 实体转换为字符。
htmlspecialchars()把一些预定义的字符转换为 HTML 实体。
implode()返回一个由数组元素组合成的字符串。
join()implode() 的别名。
lcfirst()把字符串中的首字符转换为小写。
levenshtein()返回两个字符串之间的 Levenshtein 距离。
localeconv()返回本地数字及货币格式信息。
ltrim()移除字符串左侧的空白字符或其他字符。
md5()计算字符串的 MD5 散列。
md5_file()计算文件的 MD5 散列。
metaphone()计算字符串的 metaphone 键。
money_format()返回格式化为货币字符串的字符串。
nl_langinfo()返回指定的本地信息。
nl2br()在字符串中的每个新行之前插入 HTML 换行符。
number_format()通过千位分组来格式化数字。
ord()返回字符串中第一个字符的 ASCII 值。
parse_str()把查询字符串解析到变量中。
print()输出一个或多个字符串。
printf()输出格式化的字符串。
quoted_printable_decode()把 quoted-printable 字符串转换为 8 位字符串。
quoted_printable_encode()把 8 位字符串转换为 quoted-printable 字符串。
quotemeta()引用元字符。
rtrim()移除字符串右侧的空白字符或其他字符。
setlocale()设置地区信息(地域信息)。
sha1()计算字符串的 SHA-1 散列。
sha1_file()计算文件的 SHA-1 散列。
similar_text()计算两个字符串的相似度。
soundex()计算字符串的 soundex 键。
sprintf()把格式化的字符串写入一个变量中。
sscanf()根据指定的格式解析来自一个字符串的输入。
str_getcsv()把 CSV 字符串解析到数组中。
str_ireplace()替换字符串中的一些字符(大小写不敏感)。
str_pad()把字符串填充为新的长度。
str_repeat()把字符串重复指定的次数。
str_replace()替换字符串中的一些字符(大小写敏感)。
str_rot13()对字符串执行 ROT13 编码。
str_shuffle()随机地打乱字符串中的所有字符。
str_split()把字符串分割到数组中。
str_word_count()计算字符串中的单词数。
strcasecmp()比较两个字符串(大小写不敏感)。
strchr()查找字符串在另一字符串中的第一次出现。(strstr() 的别名。)
strcmp()比较两个字符串(大小写敏感)。
strcoll()比较两个字符串(根据本地设置)。
strcspn()返回在找到任何指定的字符之前,在字符串查找的字符数。
strip_tags()剥去字符串中的 HTML 和 PHP 标签。
stripcslashes()删除由 addcslashes() 函数添加的反斜杠。
stripslashes()删除由 addslashes() 函数添加的反斜杠。
stripos()返回字符串在另一字符串中第一次出现的位置(大小写不敏感)。
stristr()查找字符串在另一字符串中第一次出现的位置(大小写不敏感)。
strlen()返回字符串的长度。
strnatcasecmp()使用一种"自然排序"算法来比较两个字符串(大小写不敏感)。
strnatcmp()使用一种"自然排序"算法来比较两个字符串(大小写敏感)。
strncasecmp()前 n 个字符的字符串比较(大小写不敏感)。
strncmp()前 n 个字符的字符串比较(大小写敏感)。
strpbrk()在字符串中搜索指定字符中的任意一个。
strpos()返回字符串在另一字符串中第一次出现的位置(大小写敏感)。
strrchr()查找字符串在另一个字符串中最后一次出现。
strrev()反转字符串。
strripos()查找字符串在另一字符串中最后一次出现的位置(大小写不敏感)。
strrpos()查找字符串在另一字符串中最后一次出现的位置(大小写敏感)。
strspn()返回在字符串中包含的特定字符的数目。
strstr()查找字符串在另一字符串中的第一次出现(大小写敏感)。
strtok()把字符串分割为更小的字符串。
strtolower()把字符串转换为小写字母。
strtoupper()把字符串转换为大写字母。
strtr()转换字符串中特定的字符。
substr()返回字符串的一部分。
substr_compare()从指定的开始位置(二进制安全和选择性区分大小写)比较两个字符串。
substr_count()计算子串在字符串中出现的次数。
substr_replace()把字符串的一部分替换为另一个字符串。
trim()移除字符串两侧的空白字符和其他字符。
ucfirst()把字符串中的首字符转换为大写。
ucwords()把字符串中每个单词的首字符转换为大写。
vfprintf()把格式化的字符串写到指定的输出流。
vprintf()输出格式化的字符串。
vsprintf()把格式化字符串写入变量中。
wordwrap()按照指定长度对字符串进行折行处理。


回复

使用道具 举报

 楼主| 发表于 2019-11-19 17:11:32 | 显示全部楼层
PHP XML Parser 函数
PHP XML Parser 简介
XML 函数允许您解析 XML 文档,但无法对其进行验证。
XML 是一种用于标准结构化文档交换的数据格式。您可以在我们的 XML 教程 中找到更多有关 XML 的信息。
该扩展使用 Expat XML 解析器。
Expat 是一种基于事件的解析器,它把 XML 文档视为一系列事件。当某个事件发生时,它调用一个指定的函数处理它。
Expat 是无验证的解析器,忽略任何链接到文档的 DTD。但是,如果文档的形式不好,则会以一个错误消息结束。
由于它是一种基于事件,且无验证的解析器,Expat 具有快速并适合 Web 应用程序的特性。
XML 解析器函数允许您创建 XML 解析器,并为 XML 事件定义句柄。

安装
XML Parser 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。

PHP XML Parser 函数
PHP:指示支持该函数的最早的 PHP 版本。
函数
描述
PHP
utf8_decode()把 UTF-8 字符串解码为 ISO-8859-1。3
utf8_encode()把 ISO-8859-1 字符串编码为 UTF-8。3
xml_error_string()获取 XML 解析器的错误字符串。3
xml_get_current_byte_index()获取 XML 解析器的当前字节索引。3
xml_get_current_column_number()获取 XML 解析器的当前列号。3
xml_get_current_line_number()获取 XML 解析器的当前行号。3
xml_get_error_code()获取 XML 解析器的错误代码。3
xml_parse()解析 XML 文档。3
xml_parse_into_struct()把 XML 数据解析到数组中。3
xml_parser_create_ns()创建带有命名空间支持的 XML 解析器。4
xml_parser_create()创建 XML 解析器。3
xml_parser_free()释放 XML 解析器。3
xml_parser_get_option()从 XML 解析器获取选项。3
xml_parser_set_option()为 XML 解析器设置选项。3
xml_set_character_data_handler()建立字符数据处理器。3
xml_set_default_handler()建立默认处理器。3
xml_set_element_handler()建立起始和终止元素处理器。3
xml_set_end_namespace_decl_handler()建立终止命名空间声明处理器。4
xml_set_external_entity_ref_handler()建立外部实体处理器。3
xml_set_notation_decl_handler()建立符号声明处理器。3
xml_set_object()在对象中使用 XML 解析器。4
xml_set_processing_instruction_handler()建立处理指令(PI)处理器。3
xml_set_start_namespace_decl_handler()建立起始命名空间声明处理器。4
xml_set_unparsed_entity_decl_handler()建立未解析实体声明处理器。3


PHP XML Parser 常量
常量
XML_ERROR_NONE (integer)
XML_ERROR_NO_MEMORY (integer)
XML_ERROR_SYNTAX (integer)
XML_ERROR_NO_ELEMENTS (integer)
XML_ERROR_INVALID_TOKEN (integer)
XML_ERROR_UNCLOSED_TOKEN (integer)
XML_ERROR_PARTIAL_CHAR (integer)
XML_ERROR_TAG_MISMATCH (integer)
XML_ERROR_DUPLICATE_ATTRIBUTE (integer)
XML_ERROR_JUNK_AFTER_DOC_ELEMENT (integer)
XML_ERROR_PARAM_ENTITY_REF (integer)
XML_ERROR_UNDEFINED_ENTITY (integer)
XML_ERROR_RECURSIVE_ENTITY_REF (integer)
XML_ERROR_ASYNC_ENTITY (integer)
XML_ERROR_BAD_CHAR_REF (integer)
XML_ERROR_BINARY_ENTITY_REF (integer)
XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF (integer)
XML_ERROR_MISPLACED_XML_PI (integer)
XML_ERROR_UNKNOWN_ENCODING (integer)
XML_ERROR_INCORRECT_ENCODING (integer)
XML_ERROR_UNCLOSED_CDATA_SECTION (integer)
XML_ERROR_EXTERNAL_ENTITY_HANDLING (integer)
XML_OPTION_CASE_FOLDING (integer)
XML_OPTION_TARGET_ENCODING (integer)
XML_OPTION_SKIP_TAGSTART (integer)
XML_OPTION_SKIP_WHITE (integer)


回复

使用道具 举报

 楼主| 发表于 2019-11-19 17:12:04 | 显示全部楼层
PHP Zip File 函数
PHP Zip File 简介
Zip File 函数允许您读取压缩文件。

安装
如需在服务器上运行 Zip File 函数,必须安装这些库:
在 Linux 系统上安装
PHP 5+:Zip 函数和 Zip 库默认不会启用,必须从上面的链接下载。请使用 --with-zip=DIR 配置选项来包含 Zip 支持。
在 Windows 系统上安装
PHP 5+:Zip 函数默认不会启用,必须从上面的链接下载 php_zip.dll 和 ZZIPlib 库。必须在 php.ini 中启用 php_zip.dll。
如需启用任何 PHP 扩展,PHP extension_dir 设置(在 php.ini 文件中)应该设置为该 PHP 扩展所在的目录。举例 extension_dir 的值可能是 c:\php\ext。

PHP Zip File 函数
PHP:指示支持该函数的最早的 PHP 版本。
函数
描述
PHP
zip_close()关闭 ZIP 文件。4
zip_entry_close()关闭 ZIP 文件中的一个项目。4
zip_entry_compressedsize()返回 ZIP 文件中的一个项目的被压缩尺寸。4
zip_entry_compressionmethod()返回 ZIP 文件中的一个项目的压缩方法。4
zip_entry_filesize()返回 ZIP 文件中的一个项目的实际文件尺寸。4
zip_entry_name()返回 ZIP 文件中的一个项目的名称。4
zip_entry_open()打开 ZIP 文件中的一个项目以供读取。4
zip_entry_read()读取 ZIP 文件中的一个打开的项目。4
zip_open()打开 ZIP 文件。4
zip_read()读取 ZIP 文件中的下一个项目。4


PHP Zip File 常量
无。

回复

使用道具 举报

 楼主| 发表于 2019-11-19 17:12:42 | 显示全部楼层
PHP 5 时区
PHP 支持的时区
下面是 PHP 支持的时区的完整列表,这些对一些 PHP 日期函数很有用。
  • 非洲
  • 美洲
  • 南极洲
  • 北冰洋
  • 亚洲
  • 大西洋
  • 大洋洲
  • 欧洲
  • 印度洋
  • 太平洋



非洲
Africa/AbidjanAfrica/AccraAfrica/Addis_AbabaAfrica/AlgiersAfrica/Asmara
Africa/AsmeraAfrica/BamakoAfrica/BanguiAfrica/BanjulAfrica/Bissau
Africa/BlantyreAfrica/BrazzavilleAfrica/BujumburaAfrica/CairoAfrica/Casablanca
Africa/CeutaAfrica/ConakryAfrica/DakarAfrica/Dar_es_SalaamAfrica/Djibouti
Africa/DoualaAfrica/El_AaiunAfrica/FreetownAfrica/GaboroneAfrica/Harare
Africa/JohannesburgAfrica/JubaAfrica/KampalaAfrica/KhartoumAfrica/Kigali
Africa/KinshasaAfrica/LagosAfrica/LibrevilleAfrica/LomeAfrica/Luanda
Africa/LubumbashiAfrica/LusakaAfrica/MalaboAfrica/MaputoAfrica/Maseru
Africa/MbabaneAfrica/MogadishuAfrica/MonroviaAfrica/NairobiAfrica/Ndjamena
Africa/NiameyAfrica/NouakchottAfrica/OuagadougouAfrica/Porto-NovoAfrica/Sao_Tome
Africa/TimbuktuAfrica/TripoliAfrica/TunisAfrica/Windhoek
美洲
America/AdakAmerica/AnchorageAmerica/Anguilla
America/AntiguaAmerica/AraguainaAmerica/Argentina/Buenos_Aires
America/Argentina/CatamarcaAmerica/Argentina/ComodRivadaviaAmerica/Argentina/Cordoba
America/Argentina/JujuyAmerica/Argentina/La_RiojaAmerica/Argentina/Mendoza
America/Argentina/Rio_GallegosAmerica/Argentina/SaltaAmerica/Argentina/San_Juan
America/Argentina/San_LuisAmerica/Argentina/TucumanAmerica/Argentina/Ushuaia
America/ArubaAmerica/AsuncionAmerica/Atikokan
America/AtkaAmerica/BahiaAmerica/Bahia_Banderas
America/BarbadosAmerica/BelemAmerica/Belize
America/Blanc-SablonAmerica/Boa_VistaAmerica/Bogota
America/BoiseAmerica/Buenos_AiresAmerica/Cambridge_Bay
America/Campo_GrandeAmerica/CancunAmerica/Caracas
America/CatamarcaAmerica/CayenneAmerica/Cayman
America/ChicagoAmerica/ChihuahuaAmerica/Coral_Harbour
America/CordobaAmerica/Costa_RicaAmerica/Creston
America/CuiabaAmerica/CuracaoAmerica/Danmarkshavn
America/DawsonAmerica/Dawson_CreekAmerica/Denver
America/DetroitAmerica/DominicaAmerica/Edmonton
America/EirunepeAmerica/El_SalvadorAmerica/Ensenada
America/Fort_WayneAmerica/FortalezaAmerica/Glace_Bay
America/GodthabAmerica/Goose_BayAmerica/Grand_Turk
America/GrenadaAmerica/GuadeloupeAmerica/Guatemala
America/GuayaquilAmerica/GuyanaAmerica/Halifax
America/HavanaAmerica/HermosilloAmerica/Indiana/Indianapolis
America/Indiana/KnoxAmerica/Indiana/MarengoAmerica/Indiana/Petersburg
America/Indiana/Tell_CityAmerica/Indiana/VevayAmerica/Indiana/Vincennes
America/Indiana/WinamacAmerica/IndianapolisAmerica/Inuvik
America/IqaluitAmerica/JamaicaAmerica/Jujuy
America/JuneauAmerica/Kentucky/LouisvilleAmerica/Kentucky/Monticello
America/Knox_INAmerica/KralendijkAmerica/La_Paz
America/LimaAmerica/Los_AngelesAmerica/Louisville
America/Lower_PrincesAmerica/MaceioAmerica/Managua
America/ManausAmerica/MarigotAmerica/Martinique
America/MatamorosAmerica/MazatlanAmerica/Mendoza
America/MenomineeAmerica/MeridaAmerica/Metlakatla
America/Mexico_CityAmerica/MiquelonAmerica/Moncton
America/MonterreyAmerica/MontevideoAmerica/Montreal
America/MontserratAmerica/NassauAmerica/New_York
America/NipigonAmerica/NomeAmerica/Noronha
America/North_Dakota/BeulahAmerica/North_Dakota/CenterAmerica/North_Dakota/New_Salem
America/OjinagaAmerica/PanamaAmerica/Pangnirtung
America/ParamariboAmerica/PhoenixAmerica/Port-au-Prince
America/Port_of_SpainAmerica/Porto_AcreAmerica/Porto_Velho
America/Puerto_RicoAmerica/Rainy_RiverAmerica/Rankin_Inlet
America/RecifeAmerica/ReginaAmerica/Resolute
America/Rio_BrancoAmerica/RosarioAmerica/Santa_Isabel
America/SantaremAmerica/SantiagoAmerica/Santo_Domingo
America/Sao_PauloAmerica/ScoresbysundAmerica/Shiprock
America/SitkaAmerica/St_BarthelemyAmerica/St_Johns
America/St_KittsAmerica/St_LuciaAmerica/St_Thomas
America/St_VincentAmerica/Swift_CurrentAmerica/Tegucigalpa
America/ThuleAmerica/Thunder_BayAmerica/Tijuana
America/TorontoAmerica/TortolaAmerica/Vancouver
America/VirginAmerica/WhitehorseAmerica/Winnipeg
America/YakutatAmerica/Yellowknife
南极洲
Antarctica/CaseyAntarctica/DavisAntarctica/DumontDUrvilleAntarctica/MacquarieAntarctica/Mawson
Antarctica/McMurdoAntarctica/PalmerAntarctica/RotheraAntarctica/South_PoleAntarctica/Syowa
Antarctica/Vostok
北冰洋
Arctic/Longyearbyen
亚洲
Asia/AdenAsia/AlmatyAsia/AmmanAsia/AnadyrAsia/Aqtau
Asia/AqtobeAsia/AshgabatAsia/AshkhabadAsia/BaghdadAsia/Bahrain
Asia/BakuAsia/BangkokAsia/BeirutAsia/BishkekAsia/Brunei
Asia/CalcuttaAsia/ChoibalsanAsia/ChongqingAsia/ChungkingAsia/Colombo
Asia/DaccaAsia/DamascusAsia/DhakaAsia/DiliAsia/Dubai
Asia/DushanbeAsia/GazaAsia/HarbinAsia/HebronAsia/Ho_Chi_Minh
Asia/Hong_KongAsia/HovdAsia/IrkutskAsia/IstanbulAsia/Jakarta
Asia/JayapuraAsia/JerusalemAsia/KabulAsia/KamchatkaAsia/Karachi
Asia/KashgarAsia/KathmanduAsia/KatmanduAsia/KhandygaAsia/Kolkata
Asia/KrasnoyarskAsia/Kuala_LumpurAsia/KuchingAsia/KuwaitAsia/Macao
Asia/MacauAsia/MagadanAsia/MakassarAsia/ManilaAsia/Muscat
Asia/NicosiaAsia/NovokuznetskAsia/NovosibirskAsia/OmskAsia/Oral
Asia/Phnom_PenhAsia/PontianakAsia/PyongyangAsia/QatarAsia/Qyzylorda
Asia/RangoonAsia/RiyadhAsia/SaigonAsia/SakhalinAsia/Samarkand
Asia/SeoulAsia/ShanghaiAsia/SingaporeAsia/TaipeiAsia/Tashkent
Asia/TbilisiAsia/TehranAsia/Tel_AvivAsia/ThimbuAsia/Thimphu
Asia/TokyoAsia/Ujung_PandangAsia/UlaanbaatarAsia/Ulan_BatorAsia/Urumqi
Asia/Ust-NeraAsia/VientianeAsia/VladivostokAsia/YakutskAsia/Yekaterinburg
Asia/Yerevan
大西洋
Atlantic/AzoresAtlantic/BermudaAtlantic/Canar





学过了






回复

使用道具 举报

 楼主| 发表于 2019-11-19 17:13:41 | 显示全部楼层
PHP 图像处理
PHP 提供了丰富的图像处理函数,主要包括:
函数
描述
gd_info()取得当前安装的 GD 库的信息
getimagesize()获取图像信息
getimagesizefromstring()获取图像信息
image_type_to_extension()获取图片后缀
image_type_to_mime_type()返回图像的 MIME 类型
image2wbmp()输出WBMP图片
imageaffine()返回经过仿射变换后的图像
imageaffinematrixconcat()连接两个矩阵
imageaffinematrixget()获取矩阵
imagealphablending()设定图像的混色模式
imageantialias()是否使用抗锯齿(antialias)功能
imagearc()画椭圆弧
imagechar()写出横向字符
imagecharup()垂直地画一个字符
imagecolorallocate()为一幅图像分配颜色
imagecolorallocatealpha()为一幅图像分配颜色和透明度
imagecolorat()取得某像素的颜色索引值
imagecolorclosest()取得与指定的颜色最接近的颜色的索引值
imagecolorclosestalpha()取得与指定的颜色加透明度最接近的颜色的索引
imagecolorclosesthwb()取得与指定的颜色最接近的色度的黑白色的索引
imagesx() 、imagesy()获取图像宽度与高度
GD 库
使用 PHP 图像处理函数,需要加载 GD 支持库。请确定 php.ini 加载了 GD 库:
Window 服务器上:
  1. extension = php_gd2.dll
复制代码

Linux 和 Mac 系统上:
  1. extension = php_gd2.so
复制代码

使用 gd_info() 函数可以查看当前安装的 GD 库的信息:
  1. <?php
  2. var_dump(gd_info());?>
复制代码

输出大致如下:
  1. array(12) {
  2.   ["GD Version"]=>
  3.   string(26) "bundled (2.1.0 compatible)"
  4.   ["FreeType Support"]=>
  5.   bool(true)
  6.   ["FreeType Linkage"]=>
  7.   string(13) "with freetype"
  8.   ["T1Lib Support"]=>
  9.   bool(false)
  10.   ["GIF Read Support"]=>
  11.   bool(true)
  12.   ["GIF Create Support"]=>
  13.   bool(true)
  14.   ["JPEG Support"]=>
  15.   bool(true)
  16.   ["PNG Support"]=>
  17.   bool(true)
  18.   ["WBMP Support"]=>
  19.   bool(true)
  20.   ["XPM Support"]=>
  21.   bool(false)
  22.   ["XBM Support"]=>
  23.   bool(true)
  24.   ["JIS-mapped Japanese Font Support"]=>
  25.   bool(false)}
复制代码



回复

使用道具 举报

 楼主| 发表于 2019-11-19 17:15:31 | 显示全部楼层
PHP RESTful
REST(英文:Representational State Transfer,简称REST) ,指的是一组架构约束条件和原则。
符合REST设计风格的Web API称为RESTful API。它从以下三个方面资源进行定义:
  • 直观简短的资源地址:URI,比如:http://example.com/resources/
  • 传输的资源:Web服务接受与返回的互联网媒体类型,比如:JSON,XML,YAM等。
  • 对资源的操作:Web服务在该资源上所支持的一系列请求方法(比如:POST,GET,PUT或DELETE)。

本教程我们将使用 PHP(不用框架) 来创建一个 RESTful web service,在文章末尾你可以下载本章节使用到的代码。
通过本教程你将学习到以下内容:
  • 创建一个 RESTful Webservice。
  • 使用原生 PHP, 不依赖任何框架。
  • URI 模式需要遵循 REST 规则。
  • RESTful service 接受与返回的格式可以是 JSON, XML等。
  • 根据不同情况响应对应的 HTTP 状态码。
  • 演示请求头的使用。
  • 使用 REST 客户端来测试 RESTful web service。


RESTful Webservice 实例
以下代码是 RESTful 服务类 Site.php
实例
  1. <?php/*
  2. * 菜鸟教程 RESTful 演示实例
  3. * RESTful 服务类 */Class Site {
  4.    
  5.     private $sites = array(
  6.         1 => 'TaoBao',  
  7.         2 => 'Google',  
  8.         3 => 'Runoob',              
  9.         4 => 'Baidu',              
  10.         5 => 'Weibo',  
  11.         6 => 'Sina'
  12.             
  13.     );        
  14.    
  15.     public function getAllSite(){
  16.         return $this->sites;    }
  17.    
  18.     public function getSite($id){
  19.         
  20.         $site = array($id => ($this->sites[$id]) ? $this->sites[$id] :
  21.         $this->sites[1]);        return $site;    }    }?>
复制代码




RESTful Services URI 映射
RESTful Services URI 应该设置为一个直观简短的资源地址。Apache 服务器的 .htaccess 应设置好对应的 Rewrite 规则。
本实例我们将使用两个 URI 规则:
1、获取所有站点列表:
  1. http://localhost/restexample/site/list/
复制代码

2、使用 id 获取指定的站点,以下 URI 为获取 id 为 3 的站点:
  1. http://localhost/restexample/site/list/3/
复制代码

项目的 .htaccess 文件配置规则如下所示:
  1. # 开启 rewrite 功能Options +FollowSymlinksRewriteEngine on# 重写规则RewriteRule ^site/list/$   RestController.php?view=all [nc,qsa]RewriteRule ^site/list/([0-9]+)/$   RestController.php?view=single&id=$1 [nc,qsa]
复制代码


RESTful Web Service 控制器
.htaccess 文件中,我们通过设置参数 'view' 来获取 RestController.php 文件中对应的请求,通过获取 'view' 不同的参数来分发到不同的方法上。RestController.php 文件代码如下:
实例
  1. <?phprequire_once("SiteRestHandler.php");        $view = "";if(isset($_GET["view"]))
  2.     $view = $_GET["view"];/*
  3. * RESTful service 控制器
  4. * URL 映射*/switch($view){

  5.     case "all":        // 处理 REST Url /site/list/
  6.         $siteRestHandler = new SiteRestHandler();        
  7.         $siteRestHandler->getAllSites();        break;        
  8.     case "single":        // 处理 REST Url /site/show/<id>/
  9.         $siteRestHandler = new SiteRestHandler();        
  10.         $siteRestHandler->getSite($_GET["id"]);        break;
  11.     case "" :        //404 - not found;
  12.         break;}?>
复制代码

简单的 RESTful 基础类
以下提供了 RESTful 的一个基类,用于处理响应请求的 HTTP 状态码,SimpleRest.php 文件代码如下:
实例
  1. <?php /*
  2. * 一个简单的 RESTful web services 基类
  3. * 我们可以基于这个类来扩展需求*/class SimpleRest {
  4.    
  5.     private $httpVersion = "HTTP/1.1";
  6.     public function setHttpHeaders($contentType, $statusCode){
  7.         
  8.         $statusMessage = $this -> getHttpStatusMessage($statusCode);        
  9.         header($this->httpVersion. " ". $statusCode ." ". $statusMessage);        
  10.         header("Content-Type:". $contentType);    }
  11.    
  12.     public function getHttpStatusMessage($statusCode){
  13.         $httpStatus = array(
  14.             100 => 'Continue',  
  15.             101 => 'Switching Protocols',  
  16.             200 => 'OK',            201 => 'Created',  
  17.             202 => 'Accepted',  
  18.             203 => 'Non-Authoritative Information',  
  19.             204 => 'No Content',  
  20.             205 => 'Reset Content',  
  21.             206 => 'Partial Content',  
  22.             300 => 'Multiple Choices',  
  23.             301 => 'Moved Permanently',  
  24.             302 => 'Found',  
  25.             303 => 'See Other',  
  26.             304 => 'Not Modified',  
  27.             305 => 'Use Proxy',  
  28.             306 => '(Unused)',  
  29.             307 => 'Temporary Redirect',  
  30.             400 => 'Bad Request',  
  31.             401 => 'Unauthorized',  
  32.             402 => 'Payment Required',  
  33.             403 => 'Forbidden',  
  34.             404 => 'Not Found',  
  35.             405 => 'Method Not Allowed',  
  36.             406 => 'Not Acceptable',  
  37.             407 => 'Proxy Authentication Required',  
  38.             408 => 'Request Timeout',  
  39.             409 => 'Conflict',  
  40.             410 => 'Gone',  
  41.             411 => 'Length Required',  
  42.             412 => 'Precondition Failed',  
  43.             413 => 'Request Entity Too Large',  
  44.             414 => 'Request-URI Too Long',  
  45.             415 => 'Unsupported Media Type',  
  46.             416 => 'Requested Range Not Satisfiable',  
  47.             417 => 'Expectation Failed',  
  48.             500 => 'Internal Server Error',  
  49.             501 => 'Not Implemented',  
  50.             502 => 'Bad Gateway',  
  51.             503 => 'Service Unavailable',  
  52.             504 => 'Gateway Timeout',  
  53.             505 => 'HTTP Version Not Supported');        
  54.             return ($httpStatus[$statusCode]) ?
  55.             $httpStatus[$statusCode] : $status[500];    }}?>
复制代码

RESTful Web Service 处理类
以下是一个 RESTful Web Service 处理类 SiteRestHandler.php,继承了上面我们提供的 RESTful 基类,类中通过判断请求的参数来决定返回的 HTTP 状态码及数据格式,实例中我们提供了三种数据格式: "application/json" 、 "application/xml" 或 "text/html":
SiteRestHandler.php 文件代码如下:
实例
  1. <?php require_once("SimpleRest.php");require_once("Site.php");
  2. class SiteRestHandler extends SimpleRest {

  3.     function getAllSites() {   

  4.         $site = new Site();        $rawData = $site->getAllSite();
  5.         if(empty($rawData)) {
  6.             $statusCode = 404;            
  7.             $rawData = array('error' => 'No sites found!');        
  8.         } else {
  9.             $statusCode = 200;        }

  10.         $requestContentType = $_SERVER['HTTP_ACCEPT'];        
  11.         $this ->setHttpHeaders($requestContentType, $statusCode);               
  12.         if(strpos($requestContentType,'application/json') !== false){
  13.             $response = $this->encodeJson($rawData);            
  14.             echo $response;        } else
  15.             if(strpos($requestContentType,'text/html') !== false){
  16.             $response = $this->encodeHtml($rawData);            
  17.             echo $response;        }
  18.             else if(strpos($requestContentType,'application/xml') !== false){
  19.             $response = $this->encodeXml($rawData);           
  20.              echo $response;        }
  21.     }
  22.    
  23.     public function encodeHtml($responseData) {
  24.    
  25.         $htmlResponse = "<table border='1'>";        
  26.         foreach($responseData as $key=>$value) {
  27.                 $htmlResponse .= "<tr><td>". $key. "</td><td>".
  28.                 $value. "</td></tr>";        }
  29.         $htmlResponse .= "</table>";        
  30.         return $htmlResponse;        
  31.     }
  32.    
  33.     public function encodeJson($responseData) {
  34.         $jsonResponse = json_encode($responseData);      
  35.          return $jsonResponse;        
  36.     }
  37.    
  38.     public function encodeXml($responseData) {
  39.         // 创建 SimpleXMLElement 对象
  40.         $xml = new SimpleXMLElement('<?xml version="1.0"?><site></site>');     
  41.            foreach($responseData as $key=>$value) {
  42.             $xml->addChild($key, $value);        }
  43.         return $xml->asXML();    }
  44.    
  45.     public function getSite($id) {

  46.         $site = new Site();        $rawData = $site->getSite($id);
  47.         if(empty($rawData)) {
  48.             $statusCode = 404;           
  49.              $rawData = array('error' => 'No sites found!');        
  50.         } else {
  51.             $statusCode = 200;        }

  52.         $requestContentType = $_SERVER['HTTP_ACCEPT'];      
  53.           $this ->setHttpHeaders($requestContentType, $statusCode);               
  54.         if(strpos($requestContentType,'application/json') !== false){
  55.             $response = $this->encodeJson($rawData);            
  56.             echo $response;        }
  57.             else if(strpos($requestContentType,'text/html') !== false){
  58.             $response = $this->encodeHtml($rawData);           
  59.              echo $response;        }
  60.              else if(strpos($requestContentType,'application/xml') !== false){
  61.             $response = $this->encodeXml($rawData);         
  62.                echo $response;        }
  63.     }}?>
复制代码

接下来我们通过 http://localhost/restexample/site/list/ 访问,输出结果如下:

RESTful Web Service 客户端
接下来我们可以使用 Google Chrome 浏览器的 "Advance Rest Client" 作为 RESTful Web Service 客户端来请求我们的服务。
实例中请求 http://localhost/restexample/site/list/ 地址,接收数据类似为 Accept: application/json
请求 id 为 3 的站点 Runoob(菜鸟教程),访问地址为 http://localhost/restexample/site/list/3/,


回复

使用道具 举报

 楼主| 发表于 2019-11-19 17:16:07 | 显示全部楼层
PHP 正则表达式(PCRE)
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
更多正则表达式的内容可参考我们的:正则表达式 - 教程
PHP 中我们可以使用 PCRE 扩展来匹配字符串的模式。
PCRE 函数
函数
描述
preg_filter执行一个正则表达式搜索和替换
preg_grep返回匹配模式的数组条目
preg_last_error返回最后一个PCRE正则执行产生的错误代码
preg_match_all执行一个全局正则表达式匹配
preg_match执行一个正则表达式匹配
preg_quote转义正则表达式字符
preg_replace_callback_array执行一个正则表达式搜索并且使用一个回调进行替换
preg_replace_callback执行一个正则表达式搜索并且使用一个回调进行替换
preg_replace执行一个正则表达式的搜索和替换
preg_split通过一个正则表达式分隔字符串

PREG 常量
常量
描述
自哪个版本起

PREG_PATTERN_ORDER结果按照"规则"排序,仅用于preg_match_all(), 即$matches[0]是完整规则的匹配结果, $matches[1]是第一个子组匹配的结果,等等。since
PREG_SET_ORDER结果按照"集合"排序,仅用于preg_match_all(), 即$matches[0]保存第一次匹配结果的所有结果(包含子组)信息, $matches[1]保存第二次的结果信息,等等。
PREG_OFFSET_CAPTURE查看PREG_SPLIT_OFFSET_CAPTURE的描述。4.3.0
PREG_SPLIT_NO_EMPTY这个标记告诉 preg_split() 进返回非空部分。
PREG_SPLIT_DELIM_CAPTURE这个标记告诉 preg_split() 同时捕获括号表达式匹配到的内容。4.0.5
PREG_SPLIT_OFFSET_CAPTURE如果设置了这个标记,每次出现的匹配子串的偏移量也会被返回。注意,这会改变返回数组中的值, 每个元素都是由匹配子串作为第0个元素,它相对目标字符串的偏移量作为第1个元素的数组。这个 标记只能用于 preg_split()。4.3.0
PREG_NO_ERROR没有匹配错误时调用 preg_last_error() 返回。5.2.0
PREG_INTERNAL_ERROR如果有PCRE内部错误时调用 preg_last_error() 返回。5.2.0
PREG_BACKTRACK_LIMIT_ERROR如果调用回溯限制超出,调用preg_last_error()时返回。5.2.0
PREG_RECURSION_LIMIT_ERROR如果递归限制超出,调用preg_last_error()时返回。5.2.0
PREG_BAD_UTF8_ERROR如果最后一个错误时由于异常的utf-8数据(仅在运行在 UTF-8 模式正则表达式下可用)。 导致的,调用preg_last_error()返回。5.2.0
PREG_BAD_UTF8_OFFSET_ERROR如果偏移量与合法的urf-8代码不匹配(仅在运行在 UTF-8 模式正则表达式下可用)。 调用preg_last_error()返回。5.3.0
PCRE_VERSIONPCRE版本号和发布日期(比如: "7.0 18-Dec-2006")。5.2.4

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )