4.5.3 替换子字符串:str_replace()、substr_replace()
查找替换功能在字符串中非常有用。可以使用查找替换从而通过PHP生成个性化文档——例如,用人名来替换<name>,用他们的地址来替换<address>。也可以使用这项功能来删改特定的术语,例如在一个论坛应用程序中,或是在智能表单应用程序中。需要再次提到的是,可以用字符串函数或者正则表达式函数来实现此功能。
进行替换操作最常用的字符串函数是str_replace()。它的函数原型如下所示:
mixed str_replace(mixed needle,mixed new_needle,mixed haystack[,int&count]));
这个函数用"new_needle"替换所有haystack中的"needle",并且返回haystack替换后的结果。可选的第四个参数是count,它包含了要执行的替换操作次数。
提示 你可以以数组的方式传递所有参数,该函数可以很好地完成替换。可以传递一个要被替换单词的数组,一个替换单词的数组,以及应用这些规则的目标字符串数组。这个函数将返回替换后的字符串数组。
例如,因为人们使用智能表单来投诉,所以可能会用一些具有“感情色彩”的单词。作为程序员,我们通过使用一个包含了带有“感情色彩”单词的数组$offcolor让Bob公司的各部门免于受到辱骂,如下所示的代码就是在str_replace()函数中使用数组的例子:
$feedback=str_replace($offcolor,'%!@*',$feedback);
函数substr_replace()则用来在给定位置中查找和替换字符串中特定的子字符串。它的原型如下所示:
string substr_replace(string string,string replacement,
int start,int[length]);
这个函数使用字符串replacement替换字符串string中的一部分。具体是哪一部分则取决于起始位置值和可选参数length的值。
start的值代表要替换字符串位置的开始偏移量。如果它为0或是一个正值,就是一个从字符串开始处计算的偏移量;如果它是一个负值,就是从字符串末尾开始的一个偏移量。
例如,如下代码会用"X"替换$test中的最后一个字符:
$test=substr_replace($test,'X',-1);
参数length是可选的,它代表PHP停止替换操作的位置。如果不给定它的值,它会从字符串start位置开始一直到字符串结束。
如果length为零,替换字符串实际上会插入到字符串中而覆盖原有的字符串。一个正的length表示要用新字符串替换掉的字符串长度。一个负的length表示从字符串尾部开始到第length个字符停止替换。