php字符串与字符替换函数

 

文本有下面标签

在php教程替换字符效率最高也是最简单字符替换函数str_replace($arr1,$arr2,$str)
实例一

 代码如下

 

1.奇怪的strtok函数,可以根据制定参数分解字符串,每一部分相当于一个指针,需要配合循环语句才能完全执行完,注意第一参数只需给一次就ok了!,例如

 代码如下

 代码如下

<?php
vnsc威尼斯城官方网站 ,$str = “当所有的人[逗]离开我的时候[逗]你劝我要耐心等候[句]”;
//第一种方法
echo “原字符串:”.$str.”<br />”;
echo
“使用str_replace()函数进行替换:”.str_replace(‘[‘,'(‘,$str).”<br
/>”;//第一个参数要替换的字符,第二个参数写要替换成的字符,第三个写原字符串
echo
“使用str_replace()函数进行替换:”.str_replace(‘]’,’)’,$str).”<br
/>”;

// 函数名:ReplaceSpacialChar($C_char)

[php]$a=”xuandun同学:鉴于您的良好表现,特颁布本届诺贝尔和平奖|假的啦”;
$c=”|,:”;
$b=strtok($a,$c);
while ($b){
echo “$b<br />”;
$b=strtok($c);
}[/php]

<img style src=”<?=$url?>/images/styleno.jpg” width=”30″
height=”30″ />
<img style src=”<?=$url?>/images/styleno.jpg” width=”30″
height=”30″ />
<img src=”images/styleno.jpg” width=”30″ height=”30″ />
<img src=”images/styleno.jpg” width=”30″ height=”30″ />
想用正则把他们替换成
有 style的 替换成<img src=”<?=$url?>/images/styleno.jpg”
width=”30″ height=”30″ />
没style 的 替换成<img src=”<?=$path?>/images/styleno.jpg”
width=”30″ height=”30″ />

str_replace(“iwind”, “kiki”, “i love iwind, iwind said”);
将输出 “i love kiki, kiki said”

//第二种方法
echo “原字符串:”.$str.”<br />”;
$str1=array(‘[逗]’,'[句]’);
$str2=array(‘,’,’。’);
echo
“使用str_replace()函数进行替换:”.str_replace($str1,$str2,$str).”<br
/>”;

// 作 用:特殊字符替换函数

2.explode函数,分解字符串为数组,这个其实前面学习的时候用到过,上例子:

*/

结果

//第三种方法
$vowels = array(“a”, “e”, “i”, “o”, “u”, “A”, “E”, “I”, “O”, “U”);
echo “使用str_replace()函数进行替换:”.str_replace($vowels, “”, “Hello
World of PHP”).”<br />”;

// 参 数:$C_char(待替换的字符串)

[php]//把1111-11-11 按-分开为数组,并输出该数组
print_r(explode(“-“,”1111-11-11”));[/php]

$content1 ='<img style src=”<?=$url?>/images/styleno.jpg”
width=”30″ height=”30″ />’;
$content ='<img style src=”/images/styleno.jpg” width=”30″
height=”30″ />’;
$a='<img src=”<?=$url?>/images/styleno.jpg” width=”30″
height=”30″ />’;
echo
preg_replace(‘/<imgs+styles+src=[‘”]?[^'”]*[‘”]?\s+.*\/>/i’,$a,$content);

即将
原字符串中的所有”iwind”都替换成了”kiki”.str_replace是大小写敏感的,所以对你不能设想用
str_replace(“iwind”, “kiki”,…)替换原字符串中的”iwind”.
str_replace还可以实现多对一

?>

// 返回值:字符串

3.implode函数,终于把1111-11-11这个超级光棍节分开了,晕用它又恢复了,例:

$content1 ='<img src=”images/styleno.jpg” width=”30″ height=”30″
/>’;
$b='<img src=”<?=$path?>/images/styleno.jpg” width=”30″
height=”30″ />’;
echo preg_replace(‘/<img
src=[‘”]?[^'”]*[‘”]?\s+.*\/>/i’,$b,$content1);

定义和用法
str_replace() 函数使用一个字符串替换字符串中的另一些字符。

// 备 注:这个函数有问题,需要测试才能使用

[php]//先分开他,变成数组了
$a=explode(“-“,”1111-11-11”);
//该函数可以合并数组,使用第一个参数指定分隔符
echo implode(“/”,$a);[/php]

语法
str_replace(find,replace,string,count)参数 描述
find 必需。规定要查找的值。
replace 必需。规定替换 find 中的值的值。
string 必需。规定被搜索的字符串。
count 可选。一个变量,对替换数进行计数。

//———————————————————————————–

4.strpos函数搜索指定字符串第一次出现的位置(区分大小写,姊妹:stripos不区分大小写),不常用查手册
5.strrpos函数搜索指定字符串最后一次出现的位置(区分大小写,姊妹:strripos不区分大小写),不常用查手册
6.最频繁用的str_replace函数,替换字符串

 

 代码如下

[php]echo str_replace(“帅哥”,”美女”,”我是帅哥”);[/php]

下面用一款

function ReplaceSpecialChar($C_char)

7.strstr函数可以获取从指定字符串开始后面的字符,比若说提取邮箱的域名部分

//– 程序名称:strreplace()
    //– 程序用途:替换变量中的非法字符
    //– 传入参数:变量值
    //********************************************************

{

[php]echo ltrim(strstr(“admin@xuandun.com”,”@”),”@”);
[/php]

   

$C_char=HTMLSpecialChars($C_char); //将特殊字元转成 HTML 格式。

因为是输出包括指定函数+后面的字符串,所以需要使用ltrim删除那个指定滴函数,查手册吧。
8.substr函数,指定位置读取字符串,查手册吧,写麻烦
9.统计指定字符串出现次数,substr_count函数
10.替换字符串内指定位置开始重新写为新的内容,substr_replace函数
11.刚才提前登场的ltrim函数,从字符串开始处删除字符,包括空格、换行、回车等等。rtrim函数删除从后面开始,teim函数从2头开始
12.str_pad函数,把字符串填充为指定长度的字符串,可以指定填充物,默认空格,更多参数手册吧
13.count_chars可以计算每个字符的出现频率,不常用 手册吧
14.str_word_count可以返回字符串里的所有单词成数组
不常用 手册吧

 代码如下

$C_char=nl2br($C_char); //将回车替换为

POSIX正则表达式函数
ereg()和eregi()
ereg_replace()和eregi_replace()
split()和spliti()

 function strreplace($str){
      $str =
strips教程lashes($str);
      $str = str_replace(chr(92),”,$str);
      $str = str_replace(chr(47),”,$str);
      $str = str_replace(chr(10).chr(13),”<br>”,$str);
      $str = str_replace(‘<‘,”<“,$str);

$C_char=str_replace(” “,” “,$C_char); //替换空格为

ereg()和eregi()ereg()字符串匹配函数,eregi()是ereg()函数的忽略大小的版本
语法格式:if (!ereg(‘^[^./][^/]*$’,
$userfile))//不匹配格式输出die
{
die(‘这是一个非法的文件名!’);
}

      $str = str_replace(‘>’,”>”,$str);
      $str = str_replace(‘;’,”;”,$str);
      $str = str_replace(‘”‘,”“”,$str);
      $str = str_replace(“‘”,”‘”,$str);
      $str = str_replace(” “,” “,$str);
      $str = str_replace(“/**/”,” “,$str);

return $C_char;

ereg_replace()和eregi_replace(忽略大小写)替换
string eregi_replace
(“正则表达式”,“目标替换字符”,“替换目标”)
语法格式:$string = “This is a test”;
echo str_replace(” is”, ” was”, $string);
echo ereg_replace(“( )is”, “\1was”, $string);\1 为继承第一个整体
echo ereg_replace(“(( )is)”, “\2was”, $string);\2继承第二个整体

      return trim($str);
    }

}

split()和spliti(忽略大小写)用正则表达式将字符串分割到数组中
list:给数组中的值赋予一些变量
语法格式:$date = “04/30/1973”;
list($month, $day, $year) = split (‘[/.-]’,
$date);//列出三个变数对应格式//以什么形式拆分 拆分谁
echo “Month: $month; Day: $day; Year: $year<br />
“;
输出结果Month: 04; Day: 30; Year: 1973

多行匹配

$rows = file(‘php.ini’); //将php.ini文件读到数组中

//循环便历
foreach($rows as $line)
{
if(trim($line))
{
//将匹配成功的参数写入数组中
if(eregi(“^([a-z0-9_.]*) *=(.*)”, $line, $matches))
//循环进行多行匹配
{
$options[$matches[1]] = trim($matches[2]);
}
unset($matches);
}
}

//输出参数结果
print_r($options);

PCRE正则表达式
PCRE全称为Perl Compatible Regular
Expression,意思是Perl兼容正则表达式。
在PCRE中,通常将模式表达式(即正则表达式)包含在两个反斜线“/”之间,如“/apple/”。

元字符(Meta-character)
元字符 说明
A 匹配字符串串首的原子
Z 匹配字符串串尾的原子
b 匹配单词的边界 /bis/ 匹配头为is的字符串 /isb/ 匹配尾为is的字符串
/bisb/ 定界
B 匹配除单词边界之外的任意字符 /Bis/ 匹配单词“This”中的“is”

d 匹配一个数字;等价于[0-9]
D 匹配除数字以外任何一个字符;等价于[^0-9]
w 匹配一个英文字母、数字或下划线;等价于[0-9a-zA-Z_]
W 匹配除英文字母、数字和下划线以外任何一个字符;等价于[^0-9a-zA-Z_]
s 匹配一个空白字符;等价于[f
tv]
S 匹配除空白字符以外任何一个字符;等价于[^f
tv]
f 匹配一个换页符等价于 x0c 或 cL
匹配一个换行符;等价于 x0a 或 cJ
匹配一个回车符等价于x0d 或 cM
t 匹配一个制表符;等价于 x09或cl
v 匹配一个垂直制表符;等价于x0b或ck
oNN 匹配一个八进制数字
xNN 匹配一个十六进制数字
cC 匹配一个控制字符

模式修正符(Pattern Modifiers)
i -可同时匹配大小写字母
M -将字符串视为多行
S -将字符串视为单行,换行符做普通字符看待,使“.”匹配任何字符
X -模式中的空白忽略不计
U -匹配到最近的字符串
e -将替换的字符串作为表达使用
格式:/apple/i匹配“apple”或“Apple”等,忽略大小写。 /i

PCRE的模式单元
//1 提取第一位的属性
/^d{2}([W])d{2}\1d{4}$匹配“12-31-2006”、“09/27/1996”、“86 01
4321”等字符串。但上述正则表达式不匹配“12/34-5678”的格式。这是因为模式“[W]”的结果“/”已经被存储。下个位置“1”引用时,其匹配模式也是字符“/”。

当不需要存储匹配结果时使用非存储模式单元“(?:)”
例如/(?:a|b|c)(D|E|F)\1g/
将匹配“aEEg”。在一些正则表达式中,使用非存储模式单元是必要的。否则,需要改变其后引用的顺序。上例还可以写成/(a|b|c)(C|E|F)2g/。

相关文章