我目前有一些多年前创建的工作代码,但我现在想要删除stripos函数,而只使用完全匹配(没有区分大小写)。下面的代码片段是我修改之前的代码片段,它可以正常工作。
<?php
$unicorn = file('unicornsites.txt', FILE_SKIP_EMPTY_LINES);
$aligator = file('aligatorsites.txt', FILE_SKIP_EMPTY_LINES);
$cat = file('catsites.txt', FILE_SKIP_EMPTY_LINES);
$srch = $_POST['search'];
$srch = preg_replace('#^https?://#', '', $srch);
$srch = preg_replace('#^wwww?.#', '', $srch);
if (array_filter($aligator, function($var) use ($srch) {return stripos($var,$srch)!==false;}))
echo '<br />That site features an aligator/div>';
elseif (array_filter($unicorn, function($var) use ($srch) {return stripos($var,$srch)!==false;}))
echo '<br />That site features a unicorn. </div>';
elseif (array_filter($cat, function($var) use ($srch) {return stripos($var,$srch)!==false;}))
echo '<br />That site features a cat.</div>';
else
echo '<br />This site features no animal</div>';
?>
这还不足以满足我的需求,所以我只想说当地址(srch字符串)是完全匹配而不是非常接近的匹配时,网站上有什么动物。我更改了程序以删除stripos函数以尝试实现此目的,但看起来我的逻辑是不正确的。该程序成功运行,但实际上似乎并没有在任何文本文件中找到字符串“stackoverflow.com”,尽管它位于unicornsites.txt中。
这不是从地址中删除http / https / www的错误,因为回声确认了这一点。我确信我在如何在mutilple文件中搜索字符串时会产生误解。任何人都可以重新定位我正确的方向吗?
<?php
$unicorn = file('unicornsites.txt', FILE_SKIP_EMPTY_LINES);
$aligator = file('aligatorsites.txt', FILE_SKIP_EMPTY_LINES);
$cat = file('catsites.txt', FILE_SKIP_EMPTY_LINES);
$srch = $_POST['search'];
$srch = preg_replace('#^https?://#', '', $srch);
$srch = preg_replace('#^wwww?.#', '', $srch);
if(in_array($srch, $aligator)) {
echo '<br />That site features an aligator/div>';
} elseif(in_array($srch, $unicorn)) {
echo '<br />That site features a unicorn. </div>';
} elseif(in_array($srch, $cat)) {
echo '<br />That site features a cat.</div>';
else
echo $srch . '<br />This site features no animal</div>';
?>