使用strpos时使用2个或更多针[重复]

问题描述 投票:0回答:3

我在

<a>
标签上运行 strpos 以查看它是否包含两个 url 之一。

目前我正在使用这个波纹管 - 我将如何设置它来检查 - 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>";
}
php strpos
3个回答
5
投票

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

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

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,按字符进行处理。然而,我怀疑这是必要的。


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>";
© www.soinside.com 2019 - 2024. All rights reserved.