[英]php - regex exact matches
我有以下字符串:
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
我遍历文本文件中的每一行,并检查是否在URL中找到了该字符串:
// 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
它仅在第二个URL上才匹配: http://csgo.steamanalyst.com/id/115716486/FALCHION-CASE-
: $item = Falchion-Case
http://csgo.steamanalyst.com/id/115716486/FALCHION-CASE-
有效
假设行结束,请尝试修改您的regx以匹配行尾
'/('.$item.')$/'
这将匹配
http://csgo.steamanalyst.com/id/115714004/FALCHION-CASE-KEY- <<end of line
基本上以类型匹配结束,您也可以这样做
'/('.$item.')\-?$/'
可选地匹配结尾的连字符
您还可以使用否定的前瞻来否定这种不需要的情况:
preg_match('/(?<!-)'. preg_quote($item) .'(?!-\w)/i', $line);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.