在另一个字符串[php]中查找一个字符串——出于某种原因匹配所有字符串?
我正在尝试将窗体提供的UTC时间和窗体提供的事件名称字符串与从文件中读入的数组相匹配。问题是它似乎总是匹配,即使它不应该匹配。文件的格式将始终保持不变,因此我知道我将查找双引号内的值,因此在使用strpos()无法获得结果后,我尝试了preg_match…现在匹配所有内容。下面的代码和示例输出($utc和$event_name)已设置并在到达此处时正确):在另一个字符串[php]中查找一个字符串——出于某种原因匹配所有字符串?,php,regex,Php,Regex,我正在尝试将窗体提供的UTC时间和窗体提供的事件名称字符串与从文件中读入的数组相匹配。问题是它似乎总是匹配,即使它不应该匹配。文件的格式将始终保持不变,因此我知道我将查找双引号内的值,因此在使用strpos()无法获得结果后,我尝试了preg_match…现在匹配所有内容。下面的代码和示例输出($utc和$event_name)已设置并在到达此处时正确): 我应该只匹配最后一个,但它们都匹配。我一直在玩正则表达式,似乎找不到正确的魔力。在双引号字符串中不需要做任何奇怪的事情,只需按原样插入变量即
我应该只匹配最后一个,但它们都匹配。我一直在玩正则表达式,似乎找不到正确的魔力。在双引号字符串中不需要做任何奇怪的事情,只需按原样插入变量即可
$match1 = "/$utc/";
$match2 = "/$event_name/";
我怀疑你的正则表达式正在寻找零长度字符串
而且,这行不需要那么多括号
if (preg_match($match1,$value) == 1 and preg_match($match2,$value) == 1) {
[...]
}
简化了它,得到了我想要的:
foreach($line_array as $key => $value) {
print "Value = $value<p>";
if (preg_match("/$utc/",$value) and preg_match("/$event_time/",$value))
{
print "Contains targets: $value<p>";
} else {
print "Case 1 - False<p>";
//code to act on hit will go here
}
}
foreach($line\u数组为$key=>$value){
打印“Value=$Value”;
if(preg_match(“/$utc/”,$value)和preg_match(“/$event_time/”,$value))
{
打印“包含目标:$value”;
}否则{
打印“案例1-错误”;
//对命中进行操作的代码将转到此处
}
}
但答案2让我找到了正确的方向。谢谢你,伊恩 如果您的文件实际上是JSON字符串,为什么不简单地对它们进行解码呢?我还没有用PHP尝试过正则表达式(虽然很快),但我建议您在正则表达式定义中要小心。您使用的某些字符可能在正则表达式中出错。查看有关构建正则表达式的详细信息。
if (preg_match($match1,$value) == 1 and preg_match($match2,$value) == 1) {
[...]
}
foreach($line_array as $key => $value) {
print "Value = $value<p>";
if (preg_match("/$utc/",$value) and preg_match("/$event_time/",$value))
{
print "Contains targets: $value<p>";
} else {
print "Case 1 - False<p>";
//code to act on hit will go here
}
}