$tr = "122222.222.332。3,434,affd"; $ms = "/[,.。]/"; print_r(preg_split($ms,$tr,6)); //1 可选 分割 多少次 //Array ( [0] => 122222 [1] => 222 [2] => 332 [3] => [4] => 3 [5] => 434,affd )
在php中对字符串的处理函数很多 在这整理了一些常用的函数
1: 处理字符串处理 大体的可分为两种 一种是 通过正侧 , 一种是 通过内置函数
先看内置的函数 :
<?php /* * Created on 2010-8-1 * * To change the template for this generated file go to * Window - Preferences - PHPeclipse - PHP - Code Templates */ //处理字符串中的每个字节 $str = "This weeked,I'm going shopping for a pet chicken"; $vowels = 0; for ($i = 0, $j = strlen($str); $i < $j; $i++) { if (strstr('T', $str[$i])) { $vowels++; } } echo $vowels; // 1 ?> <?php // 字符串的翻转 print (strrev("one two")); // owt eno ?> <?php $s = "Once upon a time threse was"; // 将字符串分解 $word = explode(' ', $s); // 或是str_split print_r($word); //Array ( [0] => Once [1] => upon [2] => a [3] => time [4] => threse [5] => was ) // 翻转这个数组 $word = array_reverse($word); print_r($word); //Array ( [0] => was [1] => threse [2] => time [3] => a [4] => upon [5] => Once ) //重组成字符串 以空格 分开 $word = implode(' ', $word); print_r($word); //was threse time a upon Once ?> <?php $vowels = array ( "a", "e", "i", "o", "u", "A", "E", "I", "O", "U" ); // $vowels 原数据 " " 要替换换的内容 Hello World of PHP 进行替换的数据 // 把 Hello World of PHP 中与 $vowels 相匹配的内容 换成 " " $onlyconsonants = str_replace($vowels, "", "Hello World of PHP"); echo $onlyconsonants; //Hll Wrld f PHP $str = "abcdef"; $str = str_replace($str, "ffffff", "abcdef"); echo $str; //ffffff $phrase = "You should eat fruits, vegetables, and fiber every day."; $healthy = array ( "fruits", "vegetables", "fiber" ); $yummy = array ( "pizza", "beer", "ice cream" ); $newphrase = str_replace($healthy, $yummy, $phrase); echo $newphrase; //"You should eat pizza", "beer", "ice cream every day ?> <?php //很明显了 echo str_repeat("-=", 10); //-=-=-=-=-=-=-=-=-=-= echo str_repeat("php", 2); //phpphp ?> <?php //控制大小写 //第一个首字母大写 print (ucfirst("one two")); //One two // 全部字母首字母大写 print (ucwords("one two")); //One Two $str = "Mary Had A Little Lamb and She LOVED It So"; $str = strtoupper($str); echo $str; // Prints MARY HAD A LITTLE LAMB AND SHE LOVED IT SO ?> <?php //去掉字符串两端的空白符 例如: 换行符 , 回车符 , 空格 ,水平,垂直 , 制表 , null $str = " abc "; echo trim($str); //两边空格 echo ltrim($str); //left echo rtrim($str); //right //还可以删除 //.. 表示 from to print ltrim("10 Pint A", "0..9"); //Pint A print rtrim("select * from table;", ";"); //select * from table ?>
以上php5内置函数对字符串的常用处理方法,php5中正侧的能处理一些特殊的字符 先看一下正侧的基本知识
字符 说明 ^ 匹配行的开始位置 $ 匹配行的结束位置 \b 匹配单词的开始或结束位置 . 匹配除换行符之外的任意数字 \w 匹配单词字符(字符、数字、下划线和汉字) \W 匹配任意的非单词字符 \s 匹配任意空白字符,如空格、制表符、换行符等 \S 匹配任意非空白字符 \d 匹配任意的数字 \D 匹配任意的非数字字符 [ aeiou ] 匹配字符集合中的任何字符 [ ^aeiou ] 匹配除了字符集合中之外的字符 [ 0~9a~zA~Z_ ] 匹配任何数字、字母和下划线,等同于\w [ ^0~9a~zA~Z ] 匹配除了任何数字、字母、下划线之外的任何字符 字符或表达式 说明 {n} 重复n次 {n,} 重复至少n次 {n,m} 重复至少n次,最多m次 * 重复至少0次,等同于{0,1} + 重复至少1次,等同于{1,} ? 重复0次或1次,等同于{0,1} *? 尽可能少的使用重复的第一个匹配 +? 尽可能少的使用重复但至少使用一次 ?? 使用零次重复(如有可能)或一次重复 {n}? 等同于{n} {n,}? 尽可能少的使用重复但至少使用n次 {n,m}? 介于n次和m次之间,尽可能少的使用重复
php5中用 pregpreg_match_all -- 进行全局正则表达式匹配_match_all -- 进行全局正则表达式匹配
int preg_match_all ( string pattern, string subject, array matches [, int flags] )
在 subject
中搜索所有与 pattern
给出的正则表达式匹配的内容并将结果以 flags
指定的顺序放到 matches
中。
搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。
flags
可以是下列标记的组合(注意把 PREG_PATTERN_ORDER 和 PREG_SET_ORDER 合起来用没有意义):
php 中 有两个常用的函数: preg_match,ereg.
$pattern = '/wang/'; $subject = 'wangxiaoming'; /****** * @param pattern 给出的正则表达式相匹配的内容。 * @param subject 要匹配的原内容。 * @param $arr 把匹配结果放到数组中 */ if(preg_match($pattern,$subject,$arr)){ if(isset($arr)){ echo "匹配成功";//匹配成功 }else{ echo "匹配失败"; } }
提示: 如果只想查看一个字符串是否包含在另一个字符串中,不要用 preg_match()。可以用 strpos() 或 strstr() 替代,要快得多。
$email = "[email protected]"; if (ereg("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+", $email)) { echo "正确"; } else { echo "错误"; }
手机
$phone = '15254162825'; if (ereg("^1[3458]([0-9]{9})",$phone)) { echo "正确"; } else { echo "错误"; }
注意: 在正侧表达式中的运算符是有顺序的
() *?+{}重复匹配 ^$\b边界处理 |条件处理 最后按顺序了
模式修正符
i :模式中的字符将同时匹配大小写字母. m :字符串视为多行. s :将字符串视为单行,换行符作为普通字符. x :将模式中的空白忽略. A :强制仅从目标字符串的开头开始匹配. D :模式中的美元元字符仅匹配目标字符串的结尾. U :匹配最近的字符串.
$pattern = "/[a-z]/i"; $subject = "B"; if (preg_match($pattern, $subject, $arr)) { echo "匹配成功"; //匹配成功 } else { echo "匹配失败"; }
$pattern = "/^aaaaa/m"; $subject = "bbbbbb\naaaaa"; if (preg_match($pattern, $subject, $arr)) { echo "匹配成功"; //匹配成功 } else { echo "匹配失败"; }
$pattern = "/555(.*)444/s"; $subject = "555\n55444"; if (preg_match($pattern, $subject, $arr)) { echo "匹配成功"; //匹配成功 } else { echo "匹配失败"; }
$pattern = "/555 444/x"; $subject = "55555444"; if (preg_match($pattern, $subject, $arr)) { echo "匹配成功"; //匹配成功 } else { echo "匹配失败"; } ?>
$pattern = "/<(.*)>/U"; $subject = "<a href>ssss</a>"; if (preg_match($pattern, $subject, $arr)) { echo "匹配成功".$arr[0]; //匹配成功<a href> } else { echo "匹配失败"; }
替换
$strs = "标题:{title}<br>作者:{author}<br>内容:{con}"; $modes = array("/{title}/","/{author}/","/{con}/"); $repl = array("java","php","oracle"); echo preg_replace($modes,$repl,$strs); //标题:java //作者:php //内容:oracle
$strss = "12222sdfs22222sdsf"; $mod = "/(s)/ie"; echo preg_replace($mod,"md5(\\1)",$strss,1); //1 可选 替换 多少次 //1222203c7c0ace395d80182db07ae2c30f034dfs22222sdsf