php Preg替换回调示例
正则表达式可以非常强大,此示例显示了如何使用preg_replace_callback函数。
<span style="color: #808080; font-style: italic;">// Define a dummy text, for testing...</span>
<span style="color: #0000ff;">$Text</span> = <span style="color: #ff0000;">"Title: Hello world!<span style="color: #000099; font-weight: bold;">\n</span>"</span>;
<span style="color: #0000ff;">$Text</span> .= <span style="color: #ff0000;">"Author: Jonas<span style="color: #000099; font-weight: bold;">\n</span>"</span>;
<span style="color: #0000ff;">$Text</span> .= <span style="color: #ff0000;">"This is a example message!<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>"</span>;
<span style="color: #0000ff;">$Text</span> .= <span style="color: #ff0000;">"Title: Entry 2<span style="color: #000099; font-weight: bold;">\n</span>"</span>;
<span style="color: #0000ff;">$Text</span> .= <span style="color: #ff0000;">"Author: Sonja<span style="color: #000099; font-weight: bold;">\n</span>"</span>;
<span style="color: #0000ff;">$Text</span> .= <span style="color: #ff0000;">"Hello world, what's up!<span style="color: #000099; font-weight: bold;">\n</span>"</span>;
<span style="color: #808080; font-style: italic;">// This function will replace specific matches</span>
<span style="color: #808080; font-style: italic;">// into a new form</span>
<span style="color: #000000; font-weight: bold;">function</span> RewriteText<span style="color: #66cc66;">(</span><span style="color: #0000ff;">$Match</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">{</span>
<span style="color: #808080; font-style: italic;">// Entire matched section: </span>
<span style="color: #808080; font-style: italic;">// --> /.../</span>
<span style="color: #0000ff;">$EntireSection</span> = <span style="color: #0000ff;">$Match</span><span style="color: #66cc66;">[</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">]</span>;
<span style="color: #808080; font-style: italic;">// --> "\nTitle: Hello world!"</span>
<span style="color: #808080; font-style: italic;">// Key </span>
<span style="color: #808080; font-style: italic;">// --> ([a-z0-9]+)</span>
<span style="color: #0000ff;">$Key</span> = <span style="color: #0000ff;">$Match</span><span style="color: #66cc66;">[</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">]</span>;
<span style="color: #808080; font-style: italic;">// --> "Title"</span>
<span style="color: #808080; font-style: italic;">// Value </span>
<span style="color: #808080; font-style: italic;">// --> ([^\n\r]+)</span>
<span style="color: #0000ff;">$Value</span> = <span style="color: #0000ff;">$Match</span><span style="color: #66cc66;">[</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">]</span>;
<span style="color: #808080; font-style: italic;">// --> "Hello world!"</span>
<span style="color: #808080; font-style: italic;">// Add some bold (<b>) tags to around the key to</span>
<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">'<b>'</span> . <span style="color: #0000ff;">$Key</span> . <span style="color: #ff0000;">'</b>: '</span> . <span style="color: #0000ff;">$Value</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #808080; font-style: italic;">// The regular expression will extract and pass all "key: value" pairs to</span>
<span style="color: #808080; font-style: italic;">// the "RewriteText" function that is definied above</span>
<span style="color: #0000ff;">$NewText</span> = <a href="http://www.php.net/preg_replace_callback"><span style="color: #000066;">preg_replace_callback</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'/[<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>]([a-z0-9]+): ([^<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>]+)/i'</span>, <span style="color: #ff0000;">"RewriteText"</span>, <span style="color: #0000ff;">$Text</span><span style="color: #66cc66;">)</span>;
<span style="color: #808080; font-style: italic;">// Print the new modified text</span>
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #0000ff;">$NewText</span>;
php 文件扩展名
返回给定文件夹中的所有文件,并按给定的扩展名过滤它们
<span style="color: #000000; font-weight: bold;">function</span> get_files_by_ext<span style="color: #66cc66;">(</span><span style="color: #0000ff;">$path</span>, <span style="color: #0000ff;">$ext</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">{</span>
<span style="color: #0000ff;">$files</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><a href="http://www.php.net/is_dir"><span style="color: #000066;">is_dir</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$path</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">{</span>
<span style="color: #0000ff;">$handle</span> = <a href="http://www.php.net/opendir"><span style="color: #000066;">opendir</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$path</span><span style="color: #66cc66;">)</span>;
<span style="color: #b1b100;">while</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$file</span> = <a href="http://www.php.net/readdir"><span style="color: #000066;">readdir</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$handle</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$file</span><span style="color: #66cc66;">[</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">]</span> == <span style="color: #ff0000;">'.'</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">{</span> <span style="color: #b1b100;">continue</span>; <span style="color: #66cc66;">}</span>
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><a href="http://www.php.net/is_file"><span style="color: #000066;">is_file</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$path</span>.<span style="color: #0000ff;">$file</span><span style="color: #66cc66;">)</span> and <a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'/<span style="color: #000099; font-weight: bold;">\.</span>'</span>.<span style="color: #0000ff;">$ext</span>.<span style="color: #ff0000;">'$/'</span>, <span style="color: #0000ff;">$file</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">{</span>
<span style="color: #0000ff;">$files</span><span style="color: #66cc66;">[</span><span style="color: #66cc66;">]</span> = <span style="color: #0000ff;">$file</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #66cc66;">}</span>
<a href="http://www.php.net/closedir"><span style="color: #000066;">closedir</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$handle</span><span style="color: #66cc66;">)</span>;
<a href="http://www.php.net/sort"><span style="color: #000066;">sort</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$files</span><span style="color: #66cc66;">)</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$files</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #808080; font-style: italic;">/*
** Example:
*/</span>
<a href="http://www.php.net/print_r"><span style="color: #000066;">print_r</span></a><span style="color: #66cc66;">(</span>get_files_by_ext<span style="color: #66cc66;">(</span><span style="color: #ff0000;">'data/'</span>, <span style="color: #ff0000;">'txt'</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>;
<span style="color: #808080; font-style: italic;">/*
returns:
Array
(
[0] => readme_1.txt
[1] => readme_2.txt
)
*/</span>
php 数组映射
演示如何使用array_map函数。
<span style="color: #000000; font-weight: bold;">function</span> filter_val<span style="color: #66cc66;">(</span><span style="color: #0000ff;">$val</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">{</span>
<span style="color: #0000ff;">$val</span> = <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'.'</span>, <span style="color: #ff0000;">''</span>, <span style="color: #0000ff;">$val</span><span style="color: #66cc66;">)</span>;
<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$val</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #0000ff;">$a</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span>
<span style="color: #ff0000;">'one'</span> => <span style="color: #ff0000;">'two.'</span>,
<span style="color: #ff0000;">'three'</span> => <span style="color: #ff0000;">'four.'</span>,
<span style="color: #ff0000;">'five'</span> => <span style="color: #ff0000;">'six.'</span>
<span style="color: #66cc66;">)</span>;
<span style="color: #0000ff;">$array</span> = <a href="http://www.php.net/array_map"><span style="color: #000066;">array_map</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'filter_val'</span>, <span style="color: #0000ff;">$a</span><span style="color: #66cc66;">)</span>;
<a href="http://www.php.net/print_r"><span style="color: #000066;">print_r</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$array</span><span style="color: #66cc66;">)</span>;
<span style="color: #808080; font-style: italic;">/*
returns:
Array
(
[one] => two
[three] => four
[five] => six
)
*/</span>
php 随机颜色
生成随机的十六进制颜色(如FF00FF)。
<span style="color: #000000; font-weight: bold;">function</span> random_color<span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">{</span>
<a href="http://www.php.net/mt_srand"><span style="color: #000066;">mt_srand</span></a><span style="color: #66cc66;">(</span><span style="color: #66cc66;">(</span>double<span style="color: #66cc66;">)</span><a href="http://www.php.net/microtime"><span style="color: #000066;">microtime</span></a><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>*<span style="color: #cc66cc;">1000000</span><span style="color: #66cc66;">)</span>;
<span style="color: #0000ff;">$c</span> = <span style="color: #ff0000;">''</span>;
<span style="color: #b1b100;">while</span><span style="color: #66cc66;">(</span><a href="http://www.php.net/strlen"><span style="color: #000066;">strlen</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$c</span><span style="color: #66cc66;">)</span><<span style="color: #cc66cc;">6</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">{</span>
<span style="color: #0000ff;">$c</span> .= <a href="http://www.php.net/sprintf"><span style="color: #000066;">sprintf</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">"%02X"</span>, <a href="http://www.php.net/mt_rand"><span style="color: #000066;">mt_rand</span></a><span style="color: #66cc66;">(</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">255</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$c</span>;
<span style="color: #66cc66;">}</span>
php 如何计算目录的大小
返回整个文件夹的文件大小,包括所有子文件夹和文件。
<span style="color: #808080; font-style: italic;">/**
* Calculate the full size of a directory
*
* @author Jonas John
* @version 0.2
* @link http://www.jonasjohn.de/snippets/php/dir-size.htm
* @param string $DirectoryPath Directory path
*/</span>
<span style="color: #000000; font-weight: bold;">function</span> CalcDirectorySize<span style="color: #66cc66;">(</span><span style="color: #0000ff;">$DirectoryPath</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
<span style="color: #808080; font-style: italic;">// I reccomend using a normalize_path function here</span>
<span style="color: #808080; font-style: italic;">// to make sure $DirectoryPath contains an ending slash</span>
<span style="color: #808080; font-style: italic;">// (-> http://www.jonasjohn.de/snippets/php/normalize-path.htm)</span>
<span style="color: #808080; font-style: italic;">// To display a good looking size you can use a readable_filesize</span>
<span style="color: #808080; font-style: italic;">// function.</span>
<span style="color: #808080; font-style: italic;">// (-> http://www.jonasjohn.de/snippets/php/readable-filesize.htm)</span>
<span style="color: #0000ff;">$Size</span> = <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">$Dir</span> = <a href="http://www.php.net/opendir"><span style="color: #000066;">opendir</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$DirectoryPath</span><span style="color: #66cc66;">)</span>;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span>!<span style="color: #0000ff;">$Dir</span><span style="color: #66cc66;">)</span>
<span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">-1</span>;
<span style="color: #b1b100;">while</span> <span style="color: #66cc66;">(</span><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$File</span> = <a href="http://www.php.net/readdir"><span style="color: #000066;">readdir</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$Dir</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span> !== <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
<span style="color: #808080; font-style: italic;">// Skip file pointers</span>
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$File</span><span style="color: #66cc66;">[</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">]</span> == <span style="color: #ff0000;">'.'</span><span style="color: #66cc66;">)</span> <span style="color: #b1b100;">continue</span>;
<span style="color: #808080; font-style: italic;">// Go recursive down, or add the file size</span>
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><a href="http://www.php.net/is_dir"><span style="color: #000066;">is_dir</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$DirectoryPath</span> . <span style="color: #0000ff;">$File</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>
<span style="color: #0000ff;">$Size</span> += CalcDirectorySize<span style="color: #66cc66;">(</span><span style="color: #0000ff;">$DirectoryPath</span> . <span style="color: #0000ff;">$File</span> . DIRECTORY_SEPARATOR<span style="color: #66cc66;">)</span>;
<span style="color: #b1b100;">else</span>
<span style="color: #0000ff;">$Size</span> += <a href="http://www.php.net/filesize"><span style="color: #000066;">filesize</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$DirectoryPath</span> . <span style="color: #0000ff;">$File</span><span style="color: #66cc66;">)</span>;
<span style="color: #66cc66;">}</span>
<a href="http://www.php.net/closedir"><span style="color: #000066;">closedir</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$Dir</span><span style="color: #66cc66;">)</span>;
<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$Size</span>;
<span style="color: #66cc66;">}</span>
php 全球范例
演示如何使用glob函数来读取目录列表,如同“opendir”一样。 - 更容易:-)
<span style="color: #0000ff;">$dir</span> = <span style="color: #ff0000;">'./'</span>;
<span style="color: #b1b100;">foreach</span><span style="color: #66cc66;">(</span><a href="http://www.php.net/glob"><span style="color: #000066;">glob</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$dir</span>.<span style="color: #ff0000;">'*.txt'</span><span style="color: #66cc66;">)</span> <span style="color: #b1b100;">as</span> <span style="color: #0000ff;">$file</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #0000ff;">$file</span> . <span style="color: #ff0000;">"<span style="color: #000099; font-weight: bold;">\n</span>"</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #808080; font-style: italic;">/* returns:
./dummy.txt
./foo.txt
./ideas.txt
./robots.txt
./scite.txt
*/</span>
<span style="color: #808080; font-style: italic;">/*
** other examples:
*/</span>
<span style="color: #808080; font-style: italic;">// also possible:</span>
<span style="color: #0000ff;">$files</span> = <a href="http://www.php.net/glob"><span style="color: #000066;">glob</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'*.*'</span><span style="color: #66cc66;">)</span>;
<a href="http://www.php.net/sort"><span style="color: #000066;">sort</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$files</span><span style="color: #66cc66;">)</span>;
<span style="color: #808080; font-style: italic;">// This shows how to use the GLOB_BRACE flag:</span>
<span style="color: #0000ff;">$images</span> = <a href="http://www.php.net/glob"><span style="color: #000066;">glob</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">"images/{*.jpg,*.gif,*.png}"</span>, GLOB_BRACE<span style="color: #66cc66;">)</span>;
<a href="http://www.php.net/print_r"><span style="color: #000066;">print_r</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$images</span><span style="color: #66cc66;">)</span>;
<span style="color: #808080; font-style: italic;">/* Valid flags:
GLOB_MARK
GLOB_NOSORT
GLOB_NOCHECK
GLOB_NOESCAPE
GLOB_BRACE
GLOB_ONLYDIR
GLOB_ERR
see PHP.net manual for more info
*/</span>
php 格式化字符串作为机器兼容键
此代码段将可能包含特殊字符的“脏”字符串转换为机器兼容的漂亮字符串。<br/> <br/> <br/> <br/>该函数可用于创建URL或ID密钥。
<span style="color: #808080; font-style: italic;">/**
* Converts a "dirty" string that may contain special
* characters into a machine compatible nice looking string.
*
* @param string $string Input string
* @return array Formatted string
*/</span>
<span style="color: #000000; font-weight: bold;">function</span> FormatAsKey<span style="color: #66cc66;">(</span><span style="color: #0000ff;">$string</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">{</span>
<span style="color: #0000ff;">$string</span> = <a href="http://www.php.net/strtolower"><span style="color: #000066;">strtolower</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$string</span><span style="color: #66cc66;">)</span>;
<span style="color: #808080; font-style: italic;">// Fix german special chars</span>
<span style="color: #0000ff;">$string</span> = <a href="http://www.php.net/preg_replace"><span style="color: #000066;">preg_replace</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'/[äÄ]/'</span>, <span style="color: #ff0000;">'ae'</span>, <span style="color: #0000ff;">$string</span><span style="color: #66cc66;">)</span>;
<span style="color: #0000ff;">$string</span> = <a href="http://www.php.net/preg_replace"><span style="color: #000066;">preg_replace</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'/[üÜ]/'</span>, <span style="color: #ff0000;">'ue'</span>, <span style="color: #0000ff;">$string</span><span style="color: #66cc66;">)</span>;
<span style="color: #0000ff;">$string</span> = <a href="http://www.php.net/preg_replace"><span style="color: #000066;">preg_replace</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'/[öÖ]/'</span>, <span style="color: #ff0000;">'oe'</span>, <span style="color: #0000ff;">$string</span><span style="color: #66cc66;">)</span>;
<span style="color: #0000ff;">$string</span> = <a href="http://www.php.net/preg_replace"><span style="color: #000066;">preg_replace</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'/[ß]/'</span>, <span style="color: #ff0000;">'ss'</span>, <span style="color: #0000ff;">$string</span><span style="color: #66cc66;">)</span>;
<span style="color: #808080; font-style: italic;">// Replace other special chars</span>
<span style="color: #0000ff;">$specialChars</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span>
<span style="color: #ff0000;">'sharp'</span> => <span style="color: #ff0000;">'#'</span>, <span style="color: #ff0000;">'dot'</span> => <span style="color: #ff0000;">'.'</span>, <span style="color: #ff0000;">'plus'</span> => <span style="color: #ff0000;">'+'</span>,
<span style="color: #ff0000;">'and'</span> => <span style="color: #ff0000;">'&'</span>, <span style="color: #ff0000;">'percent'</span> => <span style="color: #ff0000;">'%'</span>, <span style="color: #ff0000;">'dollar'</span> => <span style="color: #ff0000;">'$'</span>,
<span style="color: #ff0000;">'equals'</span> => <span style="color: #ff0000;">'='</span>,
<span style="color: #66cc66;">)</span>;
<span style="color: #b1b100;">while</span><span style="color: #66cc66;">(</span><a href="http://www.php.net/list"><span style="color: #000066;">list</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$replacement</span>, <span style="color: #0000ff;">$char</span><span style="color: #66cc66;">)</span> = <a href="http://www.php.net/each"><span style="color: #000066;">each</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$specialChars</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>
<span style="color: #0000ff;">$string</span> = <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$char</span>, <span style="color: #ff0000;">'-'</span> . <span style="color: #0000ff;">$replacement</span> . <span style="color: #ff0000;">'-'</span>, <span style="color: #0000ff;">$string</span><span style="color: #66cc66;">)</span>;
<span style="color: #0000ff;">$string</span> = <a href="http://www.php.net/strtr"><span style="color: #000066;">strtr</span></a><span style="color: #66cc66;">(</span>
<span style="color: #0000ff;">$string</span>,
<span style="color: #ff0000;">"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"</span>,
<span style="color: #ff0000;">"AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn"</span>
<span style="color: #66cc66;">)</span>;
<span style="color: #808080; font-style: italic;">// Remove all remaining other unknown characters </span>
<span style="color: #0000ff;">$string</span> = <a href="http://www.php.net/preg_replace"><span style="color: #000066;">preg_replace</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'/[^a-z0-9<span style="color: #000099; font-weight: bold;">\-</span>]/'</span>, <span style="color: #ff0000;">'-'</span>, <span style="color: #0000ff;">$string</span><span style="color: #66cc66;">)</span>;
<span style="color: #0000ff;">$string</span> = <a href="http://www.php.net/preg_replace"><span style="color: #000066;">preg_replace</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'/^[<span style="color: #000099; font-weight: bold;">\-</span>]+/'</span>, <span style="color: #ff0000;">''</span>, <span style="color: #0000ff;">$string</span><span style="color: #66cc66;">)</span>;
<span style="color: #0000ff;">$string</span> = <a href="http://www.php.net/preg_replace"><span style="color: #000066;">preg_replace</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'/[<span style="color: #000099; font-weight: bold;">\-</span>]+$/'</span>, <span style="color: #ff0000;">''</span>, <span style="color: #0000ff;">$string</span><span style="color: #66cc66;">)</span>;
<span style="color: #0000ff;">$string</span> = <a href="http://www.php.net/preg_replace"><span style="color: #000066;">preg_replace</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'/[<span style="color: #000099; font-weight: bold;">\-</span>]{2,}/'</span>, <span style="color: #ff0000;">'-'</span>, <span style="color: #0000ff;">$string</span><span style="color: #66cc66;">)</span>;
<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$string</span>;
<span style="color: #66cc66;">}</span>
php 安全重定向
这个小功能确保访问者真正被重定向到指定的URL。<br /> <br />首先,该函数将尝试使用header()位置方法,然后通过JavaScript和META-Refresh重定向用户,最后如果一切都失败了,那么还有一个指向新URL的普通链接。
<span style="color: #000000; font-weight: bold;">function</span> safe_redirect<span style="color: #66cc66;">(</span><span style="color: #0000ff;">$url</span>, <span style="color: #0000ff;">$exit</span>=<span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
<span style="color: #808080; font-style: italic;">// Only use the header redirection if headers are not already sent</span>
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span>!<a href="http://www.php.net/headers_sent"><span style="color: #000066;">headers_sent</span></a><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">{</span>
<a href="http://www.php.net/header"><span style="color: #000066;">header</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'HTTP/1.1 301 Moved Permanently'</span><span style="color: #66cc66;">)</span>;
<a href="http://www.php.net/header"><span style="color: #000066;">header</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'Location: '</span> . <span style="color: #0000ff;">$url</span><span style="color: #66cc66;">)</span>;
<span style="color: #808080; font-style: italic;">// Optional workaround for an IE bug (thanks Olav)</span>
<a href="http://www.php.net/header"><span style="color: #000066;">header</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">"Connection: close"</span><span style="color: #66cc66;">)</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #808080; font-style: italic;">// HTML/JS Fallback:</span>
<span style="color: #808080; font-style: italic;">// If the header redirection did not work, try to use various methods other methods</span>
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">'<html>'</span>;
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">'<head><title>Redirecting you...</title>'</span>;
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">'<meta http-equiv="Refresh" content="0;url='</span>.<span style="color: #0000ff;">$url</span>.<span style="color: #ff0000;">'" />'</span>;
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">'</head>'</span>;
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">'<body onload="location.replace(<span style="color: #000099; font-weight: bold;">\'</span>'</span>.<span style="color: #0000ff;">$url</span>.<span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\'</span>)">'</span>;
<span style="color: #808080; font-style: italic;">// If the javascript and meta redirect did not work, </span>
<span style="color: #808080; font-style: italic;">// the user can still click this link</span>
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">'You should be redirected to this URL:<br />'</span>;
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">"<a href="</span><span style="color: #0000ff;">$url</span><span style="color: #ff0000;">">$url</a><br /><br />"</span>;
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">'If you are not, please click on the link above.<br />'</span>;
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">'</body>'</span>;
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">'</html>'</span>;
<span style="color: #808080; font-style: italic;">// Stop the script here (optional)</span>
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$exit</span><span style="color: #66cc66;">)</span> <a href="http://www.php.net/exit"><span style="color: #000066;">exit</span></a>;
<span style="color: #66cc66;">}</span>
php array_walk调试示例
演示如何使用array_walk函数以人类可读的格式调试和打印数组。
<span style="color: #000000; font-weight: bold;">function</span> debug_val<span style="color: #66cc66;">(</span><span style="color: #0000ff;">$val</span>, <span style="color: #0000ff;">$key</span>=<span style="color: #ff0000;">''</span>, <span style="color: #0000ff;">$depth</span>=<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><a href="http://www.php.net/is_array"><span style="color: #000066;">is_array</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$val</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">{</span>
<span style="color: #808080; font-style: italic;">// call this function again with the "sub-array":</span>
<a href="http://www.php.net/array_walk"><span style="color: #000066;">array_walk</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$val</span>, <span style="color: #ff0000;">'debug_val'</span>, <span style="color: #0000ff;">$depth</span><span style="color: #cc66cc;">+5</span><span style="color: #66cc66;">)</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #b1b100;">else</span> <span style="color: #66cc66;">{</span>
<span style="color: #808080; font-style: italic;">// if we hit a string or bool, etc. then print it:</span>
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <a href="http://www.php.net/str_repeat"><span style="color: #000066;">str_repeat</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'&nbsp;'</span>, <span style="color: #0000ff;">$depth</span><span style="color: #66cc66;">)</span>;
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">'<span style="color: blue;">'</span> . <span style="color: #0000ff;">$key</span> . <span style="color: #ff0000;">'</span>: '</span>;
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <a href="http://www.php.net/var_export"><span style="color: #000066;">var_export</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$val</span>, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">)</span>;
<a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">"<br/><span style="color: #000099; font-weight: bold;">\n</span>"</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #66cc66;">}</span>
<span style="color: #808080; font-style: italic;">/*example-start*/</span>
<span style="color: #808080; font-style: italic;">// setup the test array </span>
<span style="color: #0000ff;">$array</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span>
<span style="color: #ff0000;">'php'</span>,
<span style="color: #ff0000;">'cool'</span>,
<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'foo'</span>, <span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">3</span>, <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'mixed'</span> => <span style="color: #ff0000;">'bar'</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>,
<span style="color: #ff0000;">'php'</span> => <span style="color: #ff0000;">'array'</span>,
<span style="color: #ff0000;">'yes'</span> => <span style="color: #000000; font-weight: bold;">true</span>, <span style="color: #ff0000;">'no'</span> => <span style="color: #000000; font-weight: bold;">false</span>
<span style="color: #66cc66;">)</span>;
<span style="color: #808080; font-style: italic;">// debug the array</span>
debug_val<span style="color: #66cc66;">(</span><span style="color: #0000ff;">$array</span><span style="color: #66cc66;">)</span>;
<span style="color: #808080; font-style: italic;">/*example-end*/</span>
php 字符串之间
返回$ start和$ end之间的内容
<span style="color: #000000; font-weight: bold;">function</span> GetBetween<span style="color: #66cc66;">(</span><span style="color: #0000ff;">$content</span>,<span style="color: #0000ff;">$start</span>,<span style="color: #0000ff;">$end</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">{</span>
<span style="color: #0000ff;">$r</span> = <a href="http://www.php.net/explode"><span style="color: #000066;">explode</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$start</span>, <span style="color: #0000ff;">$content</span><span style="color: #66cc66;">)</span>;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$r</span><span style="color: #66cc66;">[</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">]</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">{</span>
<span style="color: #0000ff;">$r</span> = <a href="http://www.php.net/explode"><span style="color: #000066;">explode</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$end</span>, <span style="color: #0000ff;">$r</span><span style="color: #66cc66;">[</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">]</span><span style="color: #66cc66;">)</span>;
<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$r</span><span style="color: #66cc66;">[</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">]</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">''</span>;
<span style="color: #66cc66;">}</span>