使用strpos时使用2个或更多针

时间:2013-03-24 16:17:26

标签: php strpos

我正在<a>标记上运行strpos,看看它是否包含两个网址中的任何一个。

目前我正在使用这个轰鸣声 - 如何设置它来检查 - tumblr.com或google.com是否存在?

function find_excluded_url ($url) {

    $find = "tumblr.com"; // OR GOOGLE.COM ....

    $pos = strpos($url, $find);

    if ($pos === false) {
        return false;
    } else {
        return true;
    }
}



// SET URL
   $url = "<a href='http://tumblr.com/my_post' rel='nofollow'>This site</a>";



// CALL FUNC
$run_url = find_excluded_url($url);

if ($run_url == true) {
    echo "URL - " . $url . "<br>";
}

3 个答案:

答案 0 :(得分:4)

你不能在strpos中使用两根针。但你可以做的是使用它两次,使用或:

function find_excluded_url ($url) {
  return (strpos($url, "tumblr.com")!==false) || (strpos($url, "google.com")!==false);
}

答案 1 :(得分:0)

对于更复杂的搜索,您可能需要查看正则表达式。这可行:

$subject = 'blablabgoogle
  balblabtumblrasd
  blaasdgoogleadsad';

$pattern = '@(?:google\.com|tumblr\.com)@i';

$result = preg_match($pattern, $subject, $subpattern, PREG_OFFSET_CAPTURE);

if($result) echo 'Position: ' . $subpattern[0][1];

这种性能(如果性能对您来说是一个问题)取决于您拥有多少搜索查询以及您的干草堆有多大。正则表达式具有相对较大的开销,但是,它们只需要在文本上运行一次。如果您使用strpos两次,那么使用长字符串会变得很昂贵。如果性能确实是一个问题,你也可以编写自己的strpos,每个字符都有字符。但是,我怀疑这是必要的。

答案 2 :(得分:0)

function find_excluded_url ($url, $searchURL) {
    $pos = strpos($url, $searchURL);
    if ($pos === false) {
        return false;
    } else {
        return true;
    }
}

// SET URL
   $url = "<a href='http://tumblr.com/my_post' rel='nofollow'>This site</a>";

// CALL FUNC
$run_url = find_excluded_url($url, 'google.com');
if ($run_url == true)
    echo "URL - " . $url . "<br>";

$run_url = find_excluded_url($url, 'tumblr.com');
if ($run_url == true)
    echo "URL - " . $url . "<br>";