博主信息
Victor的博客
博文
35
粉絲
0
評論
0
訪問量
7928
積分:0
P豆:76

php-練習正則函數和字符串函數-2019年10月17日

2019年10月21日 18:50:05閱讀數:393博客 / Victor的博客 / PHP

10月17日

正則函數和字符串函數的練習

總結:函數比較多,通過練習了解個大概,實際使用時碰到類似的功能,知道有這么個函數可以用,具體用法還是需要現用現查。

練習代碼:

<?php
//需要匹配的字符串集
$str = '~jduls88430jsfhlj/[email protected]#%sdfjsd/llksfowelk0(_)_)*dsfjl13921391392swlkKLJGKJlk
slkjfekls	jfi{ejlsjfl}sf   dks<header>jfos fsljfslfjshttps:\\dfewlop0320~dfljk史蒂芬孫金佛我了jdue222ls
fslesfl;s```l;dfo13801380138mls-=s-d$f=welsd8\' . \'98888)j\' . \'slfjos\' . \'k老師都急瘋了是)zhengze.php
001122334455667788jlksj<a>doskKDFJOLMd</a>lsfsf [email protected]<command type="command checkbox radio" label="Use Command" title="Use Command does stuff" icon="/icons/command.png">	dd keophp
[email protected]  	  aaa BBDcbbccels qw222  222tt
4455667788kS&FW[]EFSDERKLhttpGldfkjd0""khi"lop"w0-oDFWEvl;slls??:""{}|[ok^^%dfk	ljfoelld;l8';

echo '<pre>';

// $pattam = '/(jl|sj)|([t]{2})/';
// $a = preg_match_all($pattam, $str, $matches);
// var_dump($a);
// var_dump($matches);

preg_match("/^(http:\/\/)?([^\/]+)/i", "http://blog.snsgou.com/index.php", $matches);
$host = $matches[2];
var_dump($matches);

// 從主機名中取得后面兩段 ./
preg_match("/[^\.\/]/", $host, $matches);
echo "域名為:{$matches[0]}";
preg_match("/[^\.\/]+/", $host, $matches);
echo "域名為:{$matches[0]}";
preg_match("/[^\.\/]+\./", $host, $matches);
echo "域名為:{$matches[0]}";
preg_match("/[^\.\/]+\.[^\.\/]/", $host, $matches);
echo "域名為:{$matches[0]}";
preg_match("/[^\.\/]+\.[^\.\/]+/", $host, $matches);
echo "域名為:{$matches[0]}";
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
echo "域名為:{$matches[0]}";

echo '<hr>';

$str = "<pre>學習php是一件快樂的事。</pre><pre>所有的phper需要共同努力!</pre>";
$kw = "php";
preg_match_all('/<pre>([\s\S]*?)<\/pre>/', $str, $mat);

print_r($mat);

for ($i = 0; $i < count($mat[0]); $i++) {

	echo $mat[0][$i];
	$mat[0][$i] = $mat[1][$i];

	echo $mat[1][$i];
	$mat[0][$i] = str_replace($kw, '<span style="color:#ff0000">' . $kw . '</span>', $mat[0][$i]);
	echo $mat[0][$i];
	$str = str_replace($mat[1][$i], $mat[0][$i], $str);
}
echo $str;

echo '<hr>';

$subject = '^ouyangke$zhulaoshi=miejue!\ximen&[] ';
$a = preg_quote($subject);
var_dump($a);

$pattem = '/^(\d+)?\.\d+$/';
$array = array(1, 2, 3.4, 53, 7.9);
$a = preg_grep($pattem, $array);
var_dump($a);

$pattem = '/[\s.]+/';
$subject = 'ouyangke ouyangke zhulaoshi zhulaoshi ximen ximen';
$a = preg_split($pattem, $subject);
var_dump($a);
echo implode($a);

echo '<hr>';
//字符串函數

$str = 'ouyangke,zhulaoshi,ximen';
$arr = explode(',', $str);
print_r($arr);

echo strstr('ouyangke', 'ou'), '<br>';

echo strstr('ouyangke', 'yang', true);
echo '<hr>';
echo strtr('ouyangke', 'ou', 'zahu'), '<br>';

echo strtr('ouyangke', ['ou' => 'zhiu']);

echo '<hr>';
echo strrchr('ouyangke', 'gk'), '<br>';
echo strrchr('ouyangke', 'yang');

echo '<hr>';
echo stristr('ouyangke', 'gk'), '<br>';
echo strpos('ouyangke', 'gk'), '<br>';
echo stripos('ouyangke', 'gk'), '<br>';
echo strripos('ouyangke', 'gk'), '<br>';
echo strrpos('ouyangke', 'y'), '<br>';
// echo substr_replace('gk', 'C', 'ouyangke'), '<br>';
echo str_replace('gk', 'Cii', 'ouyangke'), '<br>';

$replace = array("1:  AAA", "2: AAA", "3: AAA");
$b = substr_replace($replace, 'BBB', 3, 3);
var_dump($b);

//正則表達式
/* 
1、原子	:普通字符;abc 123 DDC
非打印字符;	\n	\r 	\f  \t  \v
【自定義字符】-->[]包起來的集合:[0-9a-zA-Z] or [3-7]
2、元字符
. 必須和 原子  一起使用,是原子的修飾 和 限定條件
例如: /12./ /ZH./	匹配除換行符之外的任意字符;
| 匹配2個或多個分支,可理解為并列: 比如 /12|56/
[] 匹配[]中指定的任意一個原子
[^] 匹配除去[]內指定原子的其他任意同類原子,比如[^a-z]
^	匹配字符串開始位置,必須從指定的集合或原子開始	比如^[A-Z]
$	匹配字符串結束位置的原子或指定集合 比如[A-Z]$
3、限定符
{n}	表示前面的原子出現n次	比如:[a-z]{5}
{n,}	表示前面原子連續出現不少于n次	比如:[a-z]{1,}
{n,m}	表示前面原子連續出現最少n次,最多m次	比如[0-9]{1,3}
 *		前面原子出現0次以上	比如[0-9]*	通配最大情況
+		前面原子出現1次以上	比如[0-9]+	只要出現的最大情況
?		前面原子出現0次或1次	比如[0-9]?	通配最大1位的情況
4、預定義字符
\d 		匹配任意一個十進制數 等價于 [0-9]
\D 		匹配任意字符,除十進制數之外的,上述取反,相當于[^0-9]
\w 		匹配任意一個字母數字和下劃線字符,等價于 [0-9a-zA-Z]
\W 		匹配任意一個除字母數字和下劃線之外的字符,等價于 [^0-9a-zA-Z]
\s   	匹配任意一個非空白字符(非打印的)
\S 		匹配任意一個除空白字符以外的字符
\b 		匹配整詞的邊界	比如/com\b/	/222\b/ 后面必須為空白字符
\B 		匹配整詞邊界以外的部分,上述的取反
5、特殊字符需要在前面增加\轉義	有:\*+?.|^$[]()
6、分組符		()	使整體成為一個原子,多個原子組成大原子 比如:/(jl|sj)|([0-9])/
7、界定符 	//,正則表達式要包裹在//中
8、修正符		在界定符后面
U 	取消貪婪模式(這是默認模式)
i 	忽略大小寫
s 	匹配的字符串當做一行來看
x 	模式中的空白忽略不計
9、 正則表達式
轉義字符		\
模式單元與原子表	()、(?:)、(?=)、[]
重復匹配 *、+、?、{n}、{n,}、{n,m}
邊界匹配		^、$、\b、\B
模式選擇 	|

 */

echo '</pre>';
?>



批改狀態:合格

老師批語:完成的不錯。

全部評論

文明上網理性發言,請遵守新聞評論服務協議

條評論
暫無評論暫無評論!
  • 第十期線上培訓班 白小姐救世民彩图2019