我在
<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>";
}
strpos 中不能使用两根针。但你可以做的是使用它两次,并使用 or:
function find_excluded_url ($url) {
return (strpos($url, "tumblr.com")!==false) || (strpos($url, "google.com")!==false);
}
对于更复杂的搜索,您可能需要研究正则表达式。这会起作用:
$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,按字符进行处理。然而,我怀疑这是必要的。
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>";