设为首页 收藏本站
查看: 814|回复: 0

[经验分享] php学习笔记(字符串常用处理方法与正侧)

[复制链接]

尚未签到

发表于 2017-4-12 11:43:12 | 显示全部楼层 |阅读模式
$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 = "wangyaleiit@gmail.com";
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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-363904-1-1.html 上篇帖子: Flash cs3、Flex与asp、php通信总结(包含数据库) 下篇帖子: PHP 点运算符(.)与数据类型转换的深入探讨
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表