判官007 发表于 2017-4-12 11:43:12

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

$tr = "122222.222.332。3,434,affd";
$ms = "/[,.。]/";
print_r(preg_split($ms,$tr,6)); //1 可选 分割 多少次
//Array ( => 122222 => 222 => 332 => => 3 => 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 = "Thisweeked,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 ( => Once => upon => a => time => threse => was )
// 翻转这个数组
$word = array_reverse($word);
print_r($word); //Array ( => was => threse => time => a => upon => 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 creamevery 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 = "wangyaleiit@gmail.com";
if (ereg("^()+@()+(\.)+", $email)) {
echo "正确";
} else {
echo "错误";
}
  手机

$phone = '15254162825';
if (ereg("^1({9})",$phone)) {
echo "正确";
} else {
echo "错误";
}
  注意: 在正侧表达式中的运算符是有顺序的
  ()   *?+{}重复匹配    ^$\b边界处理   |条件处理   最后按顺序了
  模式修正符

i :模式中的字符将同时匹配大小写字母.
m :字符串视为多行.
s :将字符串视为单行,换行符作为普通字符.
x :将模式中的空白忽略.
A :强制仅从目标字符串的开头开始匹配.
D :模式中的美元元字符仅匹配目标字符串的结尾.
U :匹配最近的字符串.

$pattern = "//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 = "/555444/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; //匹配成功<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
页: [1]
查看完整版本: php学习笔记(字符串常用处理方法与正侧)