匹配字符串

  • 2020-09-25 17:15:07
  • 阅读次数:
  • 作者:盈岚科技小编
  • 来源:http://www.lyjtt.cn

通常,需要检查一个更长的字符串中是否含有一个特定的子字符串。这种部分匹配通常比测试字符串的完全等价更有用处。

在智能表单例子中,希望根据反馈信息中的一些关键词将它们发送到适当的部门。例如,如果希望将关于Bob商店的信件发到销售经理那里,就需要知道消息中是否出现了单词shop或它的派生词。在了解了前面所介绍的函数后,就可以使用函数explode()和strtok()在消息中检索每个单词,然后通过运算符==或函数strcmp()对它们进行比较。

然而,还可以调用一个字符串函数或正则表达式匹配函数来完成相同的操作。这些函数可以用于在一个字符串中搜索一个模式。为了在一个字符串中查找另一个字符串,读者可以使用函数strstr()、strchr()、strrchr()和stristr()中的任意一个。

函数strstr()是最常见的,它可以用于在一个较长的字符串中查找匹配的字符串或字符。注意,在PHP中,函数strchr()和strstr()完全一样,虽然其函数名的意思是在一个字符串中查找一个字符,类似于C语言中的同样函数。在PHP中,这两个函数都可用于在字符串中查找一个字符串,包括查找只包含一个字符的字符串。strstr()函数的基本用法如下:string strstr(string haystack, string needle);;在调用时,必须向函数传递一个要被搜索的子字符串参数和一个目标关键字字符串参数。如果找到了目标关键字的一个精确匹配,函数会从目标关键字前面返回被搜索的字符串,否则返回值为false。如果存在多个目标关健字,返回的字符串从出现第一个目标关键字的位置开始。

【示例1】在智能表单应用程序中,可以按如下方式决定将邮件送到哪里:if (strstr($feedback, "shop"))    $toaddress = " shop@mysite.com";else if (strstr($feedback, "delivery"))    $toaddress = " delivery@mysite.com";else if (strstr($feedback, "bill"))    $toaddress = " bill@mysite.com";

首先,这段代码将检查反馈信息中特定的关键字,然后将邮件发送给适当的人。函数strstr()有两个变体。第一个变体是stristr(),它几乎和strstr()一样,其区别在于不区分字符大小写。对于智能表单应用程序来说,这个函数非常有用,因为用户可以输入delivery、Delivery或DELIVERY,以及其他大小写混合的情况。第二个变体是strrchr(),它与strstr()一样,但strrchr()会查找指定字符在字符串中最后一次出现的位置。

函数strpos()和strrpos()的操作和strstr()类似,但它不是返回一个子字符串,而是返回目标关键字子字符串在被搜索字符串中的位置。更有趣的是,现在的PHP手册建议使用strpos()函数替代strstr()函数来查看一个子字符串在一个字符串中出现的位置,因为前者的运行速度更快。函数strpos()的基本语法如下:int strpos(string haystack, string needle, int [offset] );返回的整数代表被搜索字符串中第一次出现目标关键字子字符串的位置。通常,第一个字符是位置。

例如,下面代码将会在浏览器中显示数值4。$test = "Hello world";echo strpos($test, "o");

在这个例子中,只是用一个字符作为目标关键字参数,实际上目标关键字参数可以是任意长度的字符串。

该函数的可选参数offset是用来指定被搜索字符串的开始搜索位置。

例如:echo strpos($test, "o", 5);以上代码会在浏览器中显示数值7,因为PHP是从位置5开始搜索字符“0”的,所以就看不到位置4上的那个字符。

【示例2】函数strrpos()与strpos()是一样的,但返回的是被搜索字符串中最后一次出现目标关键字子字符串的位置。在任何情况下,如果目标关键字不在字符串中,strpos()或strrpos()都将返回false,因此,这就可能带来新的问题,因为false在一个如PHP这样的弱类型语言中等于0,也就是说字符串的第一个字符。可以使用运算符===来测试返回值,从而避免这个问题。

$result = strpos($test, "H");if ($result === false)    echo "没有发现";else    echo "发现位置".$result;查找替换功能在字符串中非常有用。可以使用查找替换从而通过PHP生成个性化文档。例如,用人名来替换<name>,用地址来替换<address>。也可以使用这项功能来删改特定的术语,例如在一个论坛应用程序中,或是在智能表单应用程序中。需要再次提到的是,可以用字符串函数或者正则表达式函数来实现此功能。进行替换操作最常用的字符串函数是str_re-place()。

该函数的基本语法如下:string str_replace(string needle, string new_needle, string haystack);这个函数用new_needle替换所有haystack中的needle。并且返回haystack替换后的结果。可选的第四个参数是count,它包含了要执行的替换操作次数。读者可以以数组的方式传递所有参数,该函数可以很好地完成替换。可以传递一个要被替换单词的数组,一个替换单词的数组,以及应用这些规则的目标字符串数组。这个函数将返回替换后的字符串数组。

例如,因为人们使用智能表单来投诉,所以可能会用一些具有感情色彩的单词。作为程序员,通过使用一个包含了带有感情色彩单词的数组$off-color,替换掉一些不文明的用语,如下所示的代码就是在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或是一个正值,就是一个从字符串开始处计算的偏移量。如果它是一个负值,就是从字符串末尾开始的一个偏移量。

【示例3】如下代码会用X替换$test中的最后一个字符:$test = substr_replace($test, "X", -1);参数length是可选的,它代表PHP停止替换操作的位置。如果不给定它的值,它会从字符串start位置开始一直到字符串结束。如果length为零,替换字符串实际上会插入到字符串中而覆盖原有的字符串。一个正的length表示要用新字符串替换掉的字符串长度。一个负的length表示从字符串尾部开始到第length个字符停止替换。

当前文章标题:匹配字符串

当前URL:http://www.lyjtt.cn/news/wzzz/3283.html

上一篇:比较字符串

下一篇:网页设计里的关键字

网站建设、抖音推广、头条推广、微信朋友圈推广、快手推广专线:15368242187(微信同号)