我有以下字符串:
Falchion-Case
P90-ASH-WOOD-WELL-WORN
我还在文本文件中包含以下URL:
http://csgo.steamanalyst.com/id/115714004/FALCHION-CASE-KEY-
http://csgo.steamanalyst.com/id/115716486/FALCHION-CASE-
http://csgo.steamanalyst.com/id/2018/P90-ASH-WOOD-WELL-WORN
我循环遍历文本文件中的每一行,并检查是否在网址中找到该字符串:
// Read from file
if (stristr($item, "stattrak") === FALSE) {
$lines = file(public_path().'/csgoanalyst.txt');
foreach ($lines as $line) {
// Check if the line contains the string we're looking for, and print if it does
if(preg_match('/(?<!\-)('.$item.')\b/',$line) != false) { // case insensitive
echo $line;
break;
}
}
}
这在$item = P90-ASH-WOOD-WELL-WORN
时效果很好但是当$item = Falchion-Case
只有第二个http://csgo.steamanalyst.com/id/115716486/FALCHION-CASE-
有效时,它与两个网址匹配
答案 0 :(得分:1)
尝试修改您的regx以匹配行的结尾,假设行结束
'/('.$item.')$/'
这将匹配
http://csgo.steamanalyst.com/id/115714004/FALCHION-CASE-KEY- <<end of line
基本上以类型匹配结束,你也可以这样做
'/('.$item.')\-?$/'
可选地匹配结束连字符
答案 1 :(得分:0)
您还可以使用否定前瞻来否定这种不必要的情况:
preg_match('/(?<!-)'. preg_quote($item) .'(?!-\w)/i', $line);