strpos str 否 一个 否 索引 无 n
stripos str 是 一个 否 索引 无 n
strrpos char[3] 否 一个 否 索引 无 n
strripos str 是 一个 否 索引 无 -1
mb_strpos str[1] 否 一个 否 索引 无 n
mb_strrpos str[1] 否 一个 否 索引 无 -1
这种问题还存在在其他的函数组里,不仅仅是匹配的这部分而已。
(在
Perl中,所有这些功能都可以通过四个简单的操作符来完成。)
[1] 用于处理多字节字符
[2] PCRE regex: 所谓的“
Perl兼容”的正则表达式。
[3] 在PHP5中也是字符串str
PHP对大小写不敏感的操作使用不同的函数
(这个可能会有两方面的争论。有些人认为提供不同的函数更好,即使这意味着又要记很多名词了)
在
Perl中,你可以使用两个lc() 或者是 /i 标志,而PHP通常会提供一个大小写敏感的变量。而且,大小写不敏感的那些版本的函数名的命名方式也不一致。
Perl: $foo cmp $bar lc $foo cmp lc $bar
PHP: strcmp($foo, $bar) strcasecmp($foo, $bar)
Perl: index($foo, $bar) index(lc $foo, lc $bar)
PHP: strpos($foo, $bar) stripos($foo, $bar)
Perl: $foo =~ s/foo/bar/ $foo =~ s/foo/bar/i
PHP: $foo = str_replace('foo', 'bar', $foo) $foo = str_ireplace(...)
PHP: $foo = ereg_replace('foo', 'bar' ,$foo) $foo = eregi_replace(...)
PHP的函数命名方式的不一致
* 大小写不敏感的函数有一个'i'或者'case'在函数名的不同的位置。
* 毫无表现上的规律 有下划线的 和 没下划线的:
下划线 无下划线:
stream_get_line readline
disk_free_space diskfreespace
is_object isset
mcal_day_of_week jddayofweek
set_error_handler setlocale
snmp_get_quick_print snmpget
get_browser getallheaders
base64_encode urlencode
image_type_to_mime_type imagetypes
msql_num_fields mysql_numfields
php_uname phpversion
strip_tags stripslashes
bind_textdomain_codeset bindtextdomain
cal_to_jdgregoriantojd
str_rot13 strpos
Perl的核心函数名则没有含有下划线的。
* PHP 有 unlink 、link 和 rename 和系统调用一致,但是 touch 的系统调用是 utime, 不是 touch。
* 同时你也无法确定单词的顺序:
o 宾语 动词:base64_decode, iptcparse, str_shuffle, var_dump
o 动词 宾语:create_function, recode_string
Perl的核心函数都是“动词 宾语”结构的除了替代的 dbm* 函数。(注意里面的 sys 是一个前缀,而不是一个宾语。同时 flock 和 lstat 是根据系统调用命名的。shm* 和 msg* 是库函数调用)