PHP与Python编程入门指南
1. PHP处理HTML表单与数据库操作
在PHP编程中,处理HTML表单是一项基础且重要的任务。以下是一个简单的PHP代码示例,用于处理函数名并将其转换为带有链接的格式:
<?php
$regex = "/([A-Za-z0-9_]*)\(\)/";
$replace = "<em>$1</em> (<a href=\"http://www.php.net/$1\">manual</A>)";
$haystack = "File_get_contents()is easier than using fopen().";
$result = preg_replace($regex, $replace, $haystack);
echo $result;
?>
这段代码中,
$regex
是一个正则表达式,用于匹配函数名,
$replace
是替换的格式,
$haystack
是要处理的字符串。通过
preg_replace
函数,将函数名替换为带有链接的格式,最终输出结果如下:
<em>File_get_contents()</em> (<a href="http://www.php.net/file_get_contents">manual</A>) is easier than using <em>fopen()</em> (<a href="http://www.php.net/fopen">manual</A>).
在处理HTML表单时,PHP能自动处理用户提交的数据。以下是一个简单的HTML表单示例:
<form method="POST" action="thispage.php">
User ID: <input type="text" name="UserID" /><br />
Password: <input type="password" name="Password" /><br />
<input type="submit" />
</form>
当用户点击提交按钮时,
thispage.php
会被再次调用,此时用户输入的数据会被存储在
$_REQUEST
数组中。例如,如果用户输入的用户ID是
12345
,密码是
frosties
,那么
$_REQUEST['UserID']
的值为
12345
,
$_REQUEST['Password']
的值为
frosties
。需要注意的是,建议使用HTTP POST方法,因为它能发送更多的数据,并且可以防止用户篡改URL来查找脚本漏洞。
为了确保用户输入的数据安全,需要对其进行清理,防止用户将HTML或JavaScript代码注入数据库。PHP提供了
strip_tags()
函数来实现这一目的,该函数可以去除字符串中的所有HTML标签。
PHP在数据库操作方面也非常强大,它支持多种数据库,如MySQL、PostgreSQL、SQLite等。为了简化数据库操作,可以使用PEAR::DB,它是一个抽象层,允许你编写一次代码,在不同的数据库服务器上运行。
以下是一个使用PEAR::DB连接数据库并打印状态信息的示例:
<?php
include("DB.php");
$dsn = "mysql://ubuntu:alm65z@10.0.0.1/dentists";
$conn = DB::connect($dsn);
if (DB::isError($conn)) {
echo $conn->getMessage() . "\n";
} else {
echo "Connected successfully!\n";
}
?>
在这个示例中,
$dsn
是数据源名称,包含了数据库服务器类型、用户名、密码、服务器地址和数据库名称。通过
DB::connect()
函数连接数据库,如果连接成功,会返回一个数据库对象,否则会返回一个错误信息。
接下来是一个使用PEAR::DB执行SQL查询的示例:
<?php
include("DB.php");
$dsn = "mysql://ubuntu:alm65z@10.0.0.1/dentists";
$conn = DB::connect($dsn);
if (DB::isError($conn)) {
echo $conn->getMessage() . "\n";
} else {
echo "Connected successfully!\n";
$result = $conn->query("SELECT ID, Name FROM patients;");
while ($result->fetchInto($row, DB_FETCHMODE_ASSOC)) {
extract($row, EXTR_PREFIX_ALL, 'pat');
echo "$pat_ID is $pat_Name\n";
}
}
?>
在这个示例中,通过
$conn->query()
函数执行SQL查询,返回一个查询结果对象。通过
fetchInto()
函数将查询结果逐行转换为数组,最后输出每个患者的ID和姓名。
为了避免资源浪费,需要在使用完查询结果和数据库连接后进行清理,调用
$result->free()
和
$conn->disconnect()
函数即可。
2. Python编程基础
Python是一种在命令行脚本领域越来越受欢迎的编程语言,它的语法简洁明了,易于学习,能让程序员更快速地编写代码,减少代码维护时间。
目前有两个受支持的Python版本,即Python 2.x和Python 3.x。Python 2.x是向后兼容的版本,大多数已经编写的Python代码使用的是这个版本;Python 3.x是较新的版本,具有许多新特性,但不向后兼容。在选择使用哪个版本时,需要考虑程序的运行环境和所需的功能。
在Linux系统上,大多数版本都预装了Python,例如Ubuntu 10.10默认安装了Python 2.6.6,并且可以从软件源中安装Python 2.7和Python 3.x。可以通过以下三种方式运行Python脚本:
-
交互式解释器
:在终端中输入
python
命令,进入Python交互式解释器,在其中可以直接输入并执行Python代码。
-
脚本文件
:在Python脚本文件的开头添加
#!/usr/bin/python
(或
#!/usr/bin/python3
),并将文件设置为可执行,然后在终端中运行该脚本文件。
-
mod_python
:这是一个Apache模块,将Python解释器嵌入到HTTP服务器中,允许使用Python编写Web应用程序。
以下是一个在Python交互式解释器中设置和获取变量的示例:
>>> python = 'great'
>>> python
'great'
在这个示例中,将变量
python
赋值为
great
,然后通过输入变量名来获取其值。
2.1 Python基础数据类型
Python处理数字的方式比其他一些语言更加精确,它支持常见的运算符,如
+
(加法)、
-
(减法)、
*
(乘法)、
/
(除法),还增加了
%
(取模)、
**
(幂运算)和
//
(地板除法)。以下是一些数字运算的示例:
>>> a = 5
>>> b = 10
>>> a * b
50
>>> a / b
0
>>> b = 10.0
>>> a / b
0.5
>>> a // b
0.0
在这个示例中,当
a
和
b
都是整数时,
a / b
的结果为整数;当
b
是浮点数时,
a / b
的结果为浮点数。
//
运算符用于执行地板除法,将结果向下取整。
Python还支持整数和长整数的自动转换,当一个整数超出了其范围时,Python会自动将其转换为长整数。可以使用
int()
、
float()
和
long()
函数进行类型转换。
在Python中,字符串是不可变的字符序列,即一旦设置,就不能在不创建新字符串的情况下进行更改。可以使用单引号或双引号来定义字符串,例如:
>>> mystring = 'hello'
>>> myotherstring = "goodbye"
可以通过索引和切片来访问字符串中的字符,例如:
>>> string = "This is a test string"
>>> string[0]
'T'
>>> string[0:4]
'This'
Python字符串还支持一些内置方法,如
upper()
、
lower()
、
capitalize()
、
title()
等,用于改变字符串的大小写。还可以使用
isalnum()
、
isdigit()
等方法来检查字符串的类型。
2.2 Python列表和字典
Python的列表是一种可变的序列类型,类似于数组,可以包含不同类型的元素。可以使用方括号
[]
来定义列表,例如:
>>> mylist = ["python", "perl", "php"]
列表支持索引、切片、拼接和重复等操作,例如:
>>> mylist[1]
'perl'
>>> mylist + ["java"]
['python', 'perl', 'php', 'java']
>>> mylist * 2
['python', 'perl', 'php', 'python', 'perl', 'php']
列表还支持嵌套,即可以在列表中包含其他列表。需要注意的是,Python默认复制的是变量的引用,而不是变量的值。如果需要复制列表而不引用,可以使用
[:]
切片操作,例如:
>>> list4 = ["a", "b", "c"]
>>> list5 = list4[:]
列表有许多内置方法,如
sort()
、
append()
、
pop()
等,用于对列表进行排序、添加和删除元素。
字典是Python中的另一种重要数据类型,它是一种无序的键值对集合。可以使用花括号
{}
和冒号
:
来定义字典,例如:
>>> mydict = { "perl" : "a language", "php" : "another language" }
可以通过键来访问字典中的值,例如:
>>> mydict["perl"]
'a language'
字典是可变的,支持嵌套,但不能使用
+
运算符来合并两个字典,需要使用
update()
方法。可以使用
keys()
方法返回字典中所有键的列表。
2.3 Python条件语句和循环
Python支持常见的条件语句,如
>
(大于)、
<=
(小于等于)、
==
(等于),还增加了
in
运算符,用于检查字符串或列表中是否包含某个元素,例如:
>>> mystring = "J Random Hacker"
>>> "r" in mystring
True
Python的循环有两种类型:
for
循环和
while
循环。
for
循环可以用于遍历字符串、列表等序列类型,例如:
>>> string = "Hello, Python!"
>>> for s in string: print s,
H e l l o , P y t h o n !
while
循环用于在条件为真时重复执行代码块,例如:
>>> while 1: print "This will loop forever!"
This will loop forever!
This will loop forever!
...
需要注意的是,这是一个无限循环,需要使用
Ctrl+C
来中断。
在Python中,使用缩进来表示代码块,这是Python的一个重要特性。例如,在使用多行循环时,需要使用
Tab
键来进行缩进。
以下是Python编程中一些操作的流程图:
graph TD;
A[开始] --> B[选择Python版本];
B --> C{是否使用交互式解释器};
C -- 是 --> D[进入交互式解释器];
C -- 否 --> E{是否使用脚本文件};
E -- 是 --> F[编写并运行脚本文件];
E -- 否 --> G{是否使用mod_python};
G -- 是 --> H[安装并配置mod_python];
G -- 否 --> I[结束];
D --> J[进行变量操作];
J --> K[进行数字运算];
K --> L[进行字符串操作];
L --> M[进行列表操作];
M --> N[进行字典操作];
N --> O[使用条件语句和循环];
F --> J;
H --> J;
总之,PHP和Python都是非常强大的编程语言,分别在Web开发和脚本编程领域有着广泛的应用。通过学习和掌握它们的基本语法和操作,你可以编写出更加高效、安全的程序。
PHP与Python编程入门指南(续)
3. Python特性深入剖析
3.1 字符串的高级操作
除了前面提到的字符串基本操作,Python 字符串还有一些高级用法。例如,三重引号可以轻松创建包含单引号和双引号,以及跨多行的字符串,而无需转义大量特殊字符。示例如下:
>>> foo = """
..."foo"
...'bar'
...baz
...blippy
..."""
>>> foo
'\n"foo"\n\'bar\'\nbaz\nblippy\n'
另外,Python 字符串还支持使用负索引,这是一个很实用的特性。例如:
>>> bar = "news.google.com"
>>> bar[-1]
'm'
>>> bar[-4:]
'.com'
>>> bar[-10:-4]
'google'
在 Python 3.x 中,引入了新的字符串类型和方法调用,虽然在基础使用中影响不大,但在深入学习时需要留意。
3.2 列表的特性与应用
列表是 Python 中使用广泛的数据类型,随着语言的发展,其使用方式也在逐渐变化。在 Python 3.x 中,列表的比较和排序方式有所改变,使用时需要查看最新文档。
列表的嵌套和引用特性在实际编程中很重要。例如:
>>> list1 = [1, 2, 3]
>>> list2 = [4, list1, 6]
>>> list1
[1, 2, 3]
>>> list2
[4, [1, 2, 3], 6]
>>> list1[1] = "Flake"
>>> list2
[4, [1, 'Flake', 3], 6]
这里 list2 存储的是 list1 的引用,当 list1 改变时,list2 也会更新。如果需要复制列表而不引用,可以使用
[:]
切片操作:
>>> list4 = ["a", "b", "c"]
>>> list5 = list4[:]
>>> list4 = list4 + ["d"]
>>> list5
['a', 'b', 'c']
>>> list4
['a', 'b', 'c', 'd']
列表的内置方法非常实用,以下是一些常用方法的总结表格:
| 方法名 | 功能 | 示例 |
| ---- | ---- | ---- |
| sort() | 对列表进行排序 |
list5 = ["nick", "paul", "julian", "graham"]; list5.sort(); print(list5)
|
| append() | 在列表末尾添加一个元素 |
list5.append("Rebecca")
|
| pop() | 删除并返回列表末尾的元素 |
list5.pop()
|
| split() | 将字符串按指定字符分割成列表 |
string = "This is a test string"; string.split(" ")
|
3.3 字典的使用差异
字典在 Python 3.x 中的使用也有一些微妙的差异,例如需要进行列表调用才能一次性获取所有值以便打印。同时,Python 2.7 已经从 Python 3.1 中反向移植了一些特性,如有序字典。
字典不能使用
+
运算符合并,需要使用
update()
方法,示例如下:
>>> dict1 = { "key1": "value1" }
>>> dict2 = { "key2": "value2" }
>>> dict1.update(dict2)
>>> dict1
{ "key1": "value1", "key2": "value2" }
可以使用
keys()
方法返回字典中所有键的列表:
>>> mydict = { "perl": "a language", "php": "another language" }
>>> mydict.keys()
['perl', 'php']
4. 综合应用示例
为了更好地理解 PHP 和 Python 的应用,以下给出一个简单的综合示例。假设我们要开发一个简单的用户信息管理系统,使用 PHP 处理用户提交的表单信息并存储到数据库中,使用 Python 对数据库中的数据进行分析。
4.1 PHP 部分
首先,创建一个 HTML 表单用于用户输入信息:
<form method="POST" action="process.php">
Name: <input type="text" name="name" /><br />
Age: <input type="text" name="age" /><br />
<input type="submit" />
</form>
然后,创建
process.php
文件来处理表单提交的数据:
<?php
include("DB.php");
$dsn = "mysql://ubuntu:alm65z@10.0.0.1/dentists";
$conn = DB::connect($dsn);
if (DB::isError($conn)) {
echo $conn->getMessage() . "\n";
} else {
$name = $_REQUEST['name'];
$age = $_REQUEST['age'];
$query = "INSERT INTO users (name, age) VALUES ('$name', $age)";
$result = $conn->query($query);
if (DB::isError($result)) {
echo $result->getMessage() . "\n";
} else {
echo "Data inserted successfully!\n";
}
$conn->disconnect();
}
?>
4.2 Python 部分
使用 Python 从数据库中读取用户信息并进行简单的分析:
import MySQLdb
# 连接数据库
conn = MySQLdb.connect(host="10.0.0.1", user="ubuntu", passwd="alm65z", db="dentists")
cursor = conn.cursor()
# 执行查询
cursor.execute("SELECT name, age FROM users")
results = cursor.fetchall()
# 分析数据
total_age = 0
for row in results:
name, age = row
total_age += age
if len(results) > 0:
average_age = total_age / len(results)
print(f"The average age of users is {average_age}")
else:
print("No users found.")
# 关闭连接
cursor.close()
conn.close()
以下是这个综合应用的流程图:
graph TD;
A[用户访问 HTML 表单] --> B[用户输入信息并提交];
B --> C[PHP 处理表单数据];
C --> D{是否成功插入数据库};
D -- 是 --> E[显示插入成功信息];
D -- 否 --> F[显示错误信息];
G[Python 脚本启动] --> H[连接数据库];
H --> I[执行查询获取用户信息];
I --> J[分析用户信息];
J --> K[显示分析结果];
E --> G;
通过以上的学习和示例,你可以初步掌握 PHP 和 Python 的基本编程技巧和应用场景。在实际开发中,可以根据具体需求进一步深入学习和拓展。希望这些内容能帮助你在编程的道路上迈出坚实的一步。
超级会员免费看
3465

被折叠的 条评论
为什么被折叠?



