php学习笔记(字符串常用处理方法与正侧)

  $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_ORDERPREG_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 = "[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

  

你可能感兴趣的:(oracle,PHP,正则表达式,IE,Gmail)