1

我有这个 test.php 我有这个信息:

callername1 : 'Fernando Verdasco1'
callername2 : 'Fernando Verdasco2'
callername3 : 'Fernando Verdasco3'
callername4 : 'Fernando Verdasco4'
callername5 : 'Fernando Verdasco5'

此页面每 10 分钟自动更改该名称

在这个另一个页面 test1.php

我需要一个 php 代码,它只接受 callername3 和 echo'it 的名称

Fernando Verdasco3

我试过这样 test1.php?id=callername3

<?php 
  $Text=file_get_contents("test.php");
  if(isset($_GET["id"])){
     $id = $_GET["id"];
     parse_str($Text,$data);
     echo $data[$id];
  } else {
     echo "";
  }

?>

但没有结果。

还有其他选择吗?

如果我有“=”代替“:”

callername1 = 'Fernando Verdasco1'
callername2 = 'Fernando Verdasco2'
callername3 = 'Fernando Verdasco3'
callername4 = 'Fernando Verdasco4'
callername5 = 'Fernando Verdasco5'

我使用这个 php 代码它可以工作

<?php 
    $Text=file_get_contents("test.php")
    ;preg_match_all('/callername3=\'([^\']+)\'/',$Text,$Match); 
    $fid=$Match[1][0]; 
    echo $fid; 

?>

我需要这个与“:”一起工作

帮助?

4

2 回答 2

0

tihs 有一个相当简单的方法:

$fData = file_get_contents("test.php");
$lines = explode("\n", $fData);
foreach($lines as $line) {
    $t = explode(":", $line);

    echo trim($t[1]); // This will give you the name
}
于 2013-09-08T12:47:06.120 回答
0

您应该将数据存储在具有.php扩展名的文件中,因为它不是可执行的 PHP。我看起来你正在使用 JSON 语法。

由于您需要它与 ':' 一起使用,我认为无论出于何种原因,您都无法更改格式。由于正则表达式,您使用 '=' 的示例有效:

preg_match_all('/callername3=\'([^\']+)\'/',$Text,$Match); 

这就是说,匹配文本,如callername3=后跟 a'后跟一个或多个不是 a'后跟 final的字符'。s之间的所有内容都'存储在 $Match[1][0] 中(如果括号中有更多部分,它们将存储在 $Match[2][0] 中,等等)。

您的示例不起作用,因为它没有考虑=符号前后的空格。但是我们可以修复它并将其更改为:像这样工作:

preg_match('/callername3\s*:\s*\'([^\']+)\'/',$Text,$Match); 
echo $Match[1] ."\n"; 

这显示:

Fernando Verdasco3

那个正则表达式是匹配文本,开始callername3后跟任意数量的空格(即 the \s*),后跟 a :,后跟任意数量的空格,后跟引号中的名称(存储在 $Match[1] 中,这是括号中的正则表达式的区域)。

我也用过只是preg_match因为看起来你只需要匹配一个例子。

于 2013-09-08T12:56:58.207 回答