简明现代魔法 -> PHP服务器脚本 -> PHP函数补完计划:strpos()函数

PHP函数补完计划:strpos()函数

2010-08-26

strpos()函数的返回值问题,如果没有找到会返回false,假如子字符串一开始就出现,那么会返回0。为了区分返回的0与false,必须使用同等操作符 === 或 !==。

strpos()函数介绍

strpos() 函数返回字符串在另一个字符串中第一次出现的位置。如果没有找到该字符串,则返回 false。

语法:strpos(string,find,start)。

  • string:必需。规定被搜索的字符串。
  • find:必需。规定要查找的字符。
  • start:可选。规定开始搜索的位置。

该函数对大小写敏感。如需进行对大小写不敏感的搜索,请使用 stripos() 函数。

Program List:使用恒等于号 ===

<?php
$mystring = 'abcde';
$findme   = 'ab';
$pos = strpos($mystring, $findme);

// Note our use of ===.  Simply == would not work as expected
// because the position of 'ab' was the 0th (first) character.
// 这里使用了恒等于 ===,如果使用 == 的话无法得到预期的结果
// 因为字符串 ab 是从第0个字符开始的
if ($pos === false) 
{
    echo "The string '$findme' was not found in the string '$mystring'";
} 
else 
{
    echo "The string '$findme' was found in the string '$mystring'";
    echo " and exists at position $pos";
}
?>

程序输出:

The string 'ab' was found in the string 'abcde' and exists at position 0

Program List:使用 !==

<?php
$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);

// The !== operator can also be used.  Using != would not work as expected
// because the position of 'a' is 0. The statement (0 != false) evaluates 
// to false.
if ($pos !== false) 
{
	echo "The string '$findme' was found in the string '$mystring'";
	echo " and exists at position $pos";
} 
else 
{
     echo "The string '$findme' was not found in the string '$mystring'";
}
?>

程序输出:

The string 'a' was found in the string 'abc' and exists at position 0

Program List:使用偏移量

<?php
// We can search for the character, ignoring anything before the offset
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // $pos = 7, not 0
print $pos;
?>

程序输出:

7

程序输出7,并非输出1。因为在使用 strpos() 函数的时候,我们指定了跳过第0位,从第一位开始匹配。

Program List:URL自动补完整

  
<?php 
function forward($url = NULL)
{ 
    $root = "http://www.nowamagic.net/"; 
    
	// 如果参数为空,就直接输出$root的URL
    if($url == NULL) 
        $url = $root; 
    else 
	{ 
        // 在参数中查找字符串http://
		$pos = strpos($url, "http://"); 
		// echo $pos;
		// 如果找不到
        if ($pos === false) 
		{
			// 查找字符串https://在不在参数中
            $pos = strpos($url, "https://"); 
		}
		
        if ($pos === false || $pos > 0) 
		{
            $url = $root . $url; 
		}
    } 
    
    echo $url;    
} 

//$nm = "http://www.nowamagic.net";
$nm = 'info.php';
//$nm = 'www.nowamagic.net';
forward($nm);
?>

程序输出:

http://www.nowamagic.net/info.php

Program List:返回多个匹配字符串的位置

下面的函数可以以数组的形式返回多个匹配字符串的首位置。

<?php 
$mystring = "welcome to nowamagic";
$find = 'e';

$result = strposall($mystring, $find);
print_r($result);

/** 
 * strposall 
 * 
 * Find all occurrences of a needle in a haystack 
 * 
 * @param string $haystack 
 * @param string $needle 
 * @return array or false 
 */ 
function strposall($haystack, $needle)
{ 
	$s = 0; 
    $i = 0; 
    
    while (is_integer($i))
	{ 
        // $i是字符串出现的首位置
		$i = strpos($haystack,$needle,$s); 
        if (is_integer($i)) 
		{ 
            $aStrPos[] = $i; 
			// 将子字符串的长度加上已出现的位置作为下一个偏移量
            $s = $i+strlen($needle); 
        } 
    } 
    if (isset($aStrPos)) { 
        return $aStrPos; 
    } 
    else { 
        return false; 
    } 
} 
?>

程序输出:

Array ( [0] => 1 [1] => 6 )

Program List:简单的邮件地址验证

邮件地址都含有@这个字符,当然验证邮件地址用正则比较好,这个简单用一下也可以。

    
<?php
	$nm = "gonn@nowamagic.net";
	
	if(strpos($nm, '@') === false)
	{
		echo 'There was no @ in the email address.';
	}
	else
	{
		echo 'Email address maybe correct.';
	}
?>

程序输出:

Email address maybe correct.
随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们