Php 基于预匹配的案例选择
我有一个表单,当在表单中放置一个url并单击按钮时,url将被处理,并基于预匹配提取一个url。当为其中一个找到匹配项时,其他的返回一个错误Php 基于预匹配的案例选择,php,Php,我有一个表单,当在表单中放置一个url并单击按钮时,url将被处理,并基于预匹配提取一个url。当为其中一个找到匹配项时,其他的返回一个错误注意:未定义的偏移量:1如何进行设置,以便在为其中一个找到匹配项时,其他的不会给出错误 if ( !isset( $_GET['go'] ) ) return; $userLink = $_GET['go'] ; if ( !$userLink ) return; $data = file_get_contents($userLink); preg_ma
注意:未定义的偏移量:1
如何进行设置,以便在为其中一个找到匹配项时,其他的不会给出错误
if ( !isset( $_GET['go'] ) ) return;
$userLink = $_GET['go'] ;
if ( !$userLink ) return;
$data = file_get_contents($userLink);
preg_match("@^(?:\s)*var url = '(.*)';@mi",$data, $parsed1);
preg_match("@^(?:\s)*self.location = '(.*)';@mi",$data, $parsed2);
preg_match("@^(?:\s)*window.location = \"(.*)\";@mi",$data, $parsed3);
preg_match("@^(?:\s)*Lbjs.TargetUrl = '(.*)';@mi",$data, $parsed4);
preg_match("@^(?:\s)*linkDestUrl = '(.*)';@mi",$data, $parsed5);
echo 'var.url - ' . $parsed1[1] . '<br>';
echo 'self.location - ' . $parsed2[1] . '<br>';
echo 'window.location - ' . $parsed3[1] . '<br>';
echo 'Lbjs.TargetUrl - ' . $parsed4[1] . '<br>';
echo 'linkDestUrl - ' . $parsed5[1];
if(!isset($\u GET['go'])返回;
$userLink=$_GET['go'];
如果(!$userLink)返回;
$data=file\u get\u contents($userLink);
preg_match(“@^(?:;
preg_match(“@^(?:\s)*self.location=”(.*);@mi“,$data,$parsed2);
preg_match(“@^(?:\s)*window.location=\”(.*)\”;@mi“,$data,$parsed3);
preg_match(“@^(?:\s)*Lbjs.TargetUrl=”(*);@mi“,$data,$parsed4);
preg_match(“@^(?:\s)*linkDestUrl=”(.*);@mi“,$data,$parsed5);
回显“var.url-”$解析1[1]。'
';
回显“self.location-”$解析2[1]。'
';
回显“window.location-”$解析3[1]。'
';
回显“Lbjs.TargetUrl-”$解析4[1]。'
';
回显“linkDestUrl-”$parsed5[1];
您只需在打印前检查元素是否已设置:
echo 'var.url - ' . (isset($parsed1[1]) ? $parsed[1] : 'not found') . '<br>';
echo 'self.location - ' . (isset($parsed1[2]) ? $parsed[2] : 'not found') . '<br>';
echo 'window.location - ' . (isset($parsed1[3]) ? $parsed[3] : 'not found') . '<br>';
echo 'Lbjs.TargetUrl - ' . (isset($parsed1[4]) ? $parsed[4] : 'not found') . '<br>';
echo 'linkDestUrl - ' . (isset($parsed1[5]) ? $parsed[5] : 'not found');
echo'var.url-'。(isset($parsed1[1])?$parsed[1]:“未找到”)。'
';
回显“self.location-”。(isset($parsed1[2])?$parsed[2]:“未找到”)
';
回显“window.location-”。(isset($parsed1[3])?$parsed[3]:“未找到”)
';
回显“Lbjs.TargetUrl-”。(isset($parsed1[4])?$parsed[4]:“未找到”)
';
回显“linkDestUrl-”。(isset($parsed1[5])?$parsed[5]:“未找到”);
您可以尝试捕获preg\u match
的结果,如果找不到匹配项,该结果将返回0。从:
preg_match()返回模式匹配的次数。那将是
0次(不匹配)或1次
比如:
if(preg_match("@^(?:\s)*var url = '(.*)';@mi",$data, $parsed1)) {
if(!empty($parsed1[1])) { echo 'var.url - ' . $parsed1[1] . '<br>'; }
}
if(preg_match(“@^(?::\s)*var url=”(.*);@mi“,$data,$parsed1)){
如果(!empty($parsed1[1]){echo'var.url-'.$parsed1[1].
';}
}
我想只有一种URL类型会匹配,而不是两种或更多
if ( !isset( $_GET['go'] ) ) return;
$userLink = $_GET['go'] ;
if ( !$userLink ) return;
$data = file_get_contents($userLink);
$array = array(
'var url',
'self.location',
'window.location',
'Lbjs.TargetUrl',
'linkDestUrl',
);
foreach ($array as $value)
{
if (preg_match("@^(?:\s)*($value) = '(.*)';@mi",$data, $parsed))
{
break;
}
}
echo $parsed[1] . ' - ' . $parsed[2] . '<br>';
if(!isset($\u GET['go'])返回;
$userLink=$_GET['go'];
如果(!$userLink)返回;
$data=file\u get\u contents($userLink);
$array=array(
“var url”,
“自我定位”,
“窗口位置”,
“Lbjs.TargetUrl”,
“linkDestUrl”,
);
foreach($array作为$value)
{
if(preg_match(“@^(?:\s)*($value)='(.*);@mi”,$data,$parsed))
{
打破
}
}
echo$parsed[1]。-'$已解析[2]。'
';
您可以在每个preg\u match语句前加一个@。@抑制错误消息,因此在使用时要小心
@preg_match(“@^(?::\s)*变量url=”(.*);@mi“,$data,$parsed1)代码>能否提供输入字符串的示例?
if (preg_match("@^(?:\s)*(var url|self.location|window..location|Lbjs.TargetUrl|linkDestUrl) = ['\"](.*)[\"'];@mi", $data, $parsed)) {
echo $parsed[1], " - ", $parsed[2];
} else {
echo "no matches found at all";
}