1

データがこのような場合、ファイルからデータを読み取るにはどうすればよいですか。

<area shape="poly" alt="1101" coords="1735,606, 1736,606, 1737,606, 1738,606, 1739,606, 1740,606, 1741,607,

ファイルを開く方法とデータを簡単に読み取って保存する方法は知っていますが、「alt」と「coords」からデータを抽出する方法を教えてください。

<?php
    $handle = @fopen("sunset_map.map", "r");
    $conn = mysql_connect("localhost","root",""); 
    mysql_select_db("read_data",$conn);
    while (!feof($handle)) // Loop til end of file.
    {

    $buffer = fgets($handle, 4096);
    // Read a line.
    // $a = $_get['alt']  ;
    // $b = $_get['coords'];
    // parse_str("alt = str& coords = ",$myarray);
    // print_r($myarray);
    list($a,$b)=explode("|",$buffer);
    // list($myarray)=explode("|",$buffer);
    //Separate string by the means of |
    // echo $a."-".$b."<br>";
    $sql = "INSERT INTO content_data (id,coords) VALUES('".$a."','".$b."')";   
    mysql_query($sql,$conn) or die(mysql_error());

    }
?>
4

3 に答える 3

1

正規表現を使用:

$text = '<area shape="poly" alt="1101" coords="1735,606, 1736,606, 1737,606, 1738,606, 1739,606, 1740,606, 1741,607" />';
if (preg_match("/area shape=\"poly\" alt=\"(.*)\" coords=\"(.*)\" /sUSi", $text, $data) {
echo $data[0] . ' ' . $data[1] . ' ' . $data[2];
}
于 2013-06-28T14:58:53.107 に答える
1

ファイルは XML データのようです。その場合は、XMLReader インターフェイスを使用して、次のようなエリア ノードを取得します。

$sb = new XMLReader;
$sb->open( "sunset_map.map" );
if( $sb === FALSE ) {
    print "Error: Can't open the file. Aborting.\n";
    exit(1);
}

    // find the first area element
    while( $sb->read() && $sb->name !== 'area' )
      ;

    while( $sb->name == 'area' ) {
       // get the attributes you need
       $coords = $sb->getAttribute('coords');
       // Now split the $coords string with explode and whatever
       // and do your inserts

       $sb->next('area');
    }
于 2013-06-28T15:02:06.817 に答える
1

DOMDocumentを使用して HTML を解析できます。DOMDocument::getElementsByTagNameを使用して領域要素を取得します。次に、これらの要素をループするときに、DOMElement::getAttributeを使用して「alt」属性と「coords」属性を取得できます。

于 2013-06-28T14:55:53.337 に答える