Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于预匹配的案例选择_Php - Fatal编程技术网

Php 基于预匹配的案例选择

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

我有一个表单,当在表单中放置一个url并单击按钮时,url将被处理,并基于预匹配提取一个url。当为其中一个找到匹配项时,其他的返回一个错误
注意:未定义的偏移量: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";
}