使用file_get_contents PHP获取属性

时间:2014-07-21 12:21:45

标签: php html get file-get-contents

我有一个sql查询,我存储在一个变量中,我显示。我从另一个文件中获取了file_get_contents的内容,我想恢复一些代码(这是html)以便建立链接。更准确地说是检索id。 我的api.php

$base = mysql_connect ('localhost','root','');
mysql_select_db('administrations', $base);

if(isset($_GET['cp']))
{
    $sql = 'SELECT NOM_organisme, ID_organisme
            FROM organismes
            WHERE code_postal LIKE "%'.$_GET['cp'].'%"
            ORDER BY NOM_organisme;';

    $req = mysql_query($sql) or die('SQL Error !<br>'.$sql.'<br />'.mysql_error());
}

while ($data = mysql_fetch_array($req))
{
    echo '<p id="'.$data['ID_organisme'].'"'.
         $data['NOM_organisme'].'</br>'.
         $data['ID_organisme'].'</p></br>';
}

我想获得id="I WANT THIS"

我的index.php(检索内容的代码的一部分)。

if(isset($_POST['cp']))
{
    $api = "http://mywebsite.fr/api.php?cp=".$_POST['cp'];
    $var = file_get_contents($api);
    echo $var;
}

如何在index.php中获取id=""

4 个答案:

答案 0 :(得分:0)

我明白你想做什么,但是如果不知道这个小代码的目的,就不会发现它是合乎逻辑的:)

你有链接或某种类型吗?

基本上我应该做的是:

$base = mysql_connect ('localhost','root','');
mysql_select_db('administrations', $base);

if(isset($_POST['cp']))
{
    $sql = 'SELECT NOM_organisme, ID_organisme FROM organismes WHERE code_postal LIKE "%'.$_GET['cp'].'%" ORDER BY NOM_organisme;';
    $req = mysql_query($sql) or die('SQL Error !<br>'.$sql.'<br />'.mysql_error());

    while ($data = mysql_fetch_array($req))
    {
        echo '<p id="'.$data['ID_organisme'].'"'.$data['NOM_organisme'].'</br>'.$data['ID_organisme'].'</p></br>';
    }
} else {
        echo 'show something else';
}

答案 1 :(得分:0)

请看php获取文档。你需要使用url参数链接到你的脚本并在php代码中访问它们。

http://php.net/manual/en/reserved.variables.get.php

    echo '<a href="?id='.$data['ID_organisme'].'">'.$data['NOM_organisme'].'</br>'.$data['ID_organisme'].'</a></br>';

PHP

if(isset($_GET['id']))
{
    $api = "http://mywebsite.fr/api.php?cp=".$_GET['id'];
    $var = file_get_contents($api);
    echo $var;
}

如果您不想使用url参数,可以使用帖子值

http://php.net/manual/en/reserved.variables.post.php

答案 2 :(得分:0)

如果我找到你,你就是

  1. 使用 file_get_contents() index.php 中向您的网站发送GET请求。
  2. 网站( api.php )执行SQL查询并以HTML格式打印结果。
  3. index.php 获取此HTML输出并将其存储在变量 $ var 中。
  4. 您想要检索段落的id属性中包含的所有值。
  5. 在这种情况下,您可能希望使用正则表达式。 preg_match_all似乎是合适的。它应该对你有用:

    $out = array();
    preg_match_all("/id=\"([^\"]*?)\"/U", $var, $out);
    foreach ($out as $value) {
      echo 'I found some id ' . htmlspecialchars($out[$value][2]) . '<br />';
    }
    

    另外:

    1. 在这种情况下,一个不错的HTML解析器会更合适(例如,它与流文本中的id =“X”不匹配)。
    2. 您的PHP代码容易受到SQL injections
    3. 的攻击
    4. 您应该将纯文本清理为HTML appropriately

答案 3 :(得分:0)

首先,您应该尝试将API回复显示为JSON字符串,这样更方便。

如果您仍想使用api.php,首先需要关闭您的开头段落!你确实忘记了'&gt;'!

echo '<p id="'.$data['ID_organisme'].'">'.
     $data['NOM_organisme'].'</br>'.
     $data['ID_organisme'].'</p></br>';

然后你需要解析你的段落。 你可以这样做:

if(isset($_POST['cp']))
{
    $api = "http://mywebsite.fr/api.php?cp=".$_POST['cp'];
    $var = file_get_contents($api);
    preg_match("@<p id='(.*)'@", $var, $matches);
    id = $matches[1];

    echo $id;
}