2015-03-31 2 views
1

Я пытаюсь создать функцию PHP, которая позволит мне читать выбранные строки из текстового файла с использованием строки JSON. Строка JSON состоит из двух чисел, разделенных запятой. Первое число - это строка, которую я хочу искать, а вторая - количество строк, которые нужно читать вниз.Чтение строки по строке с использованием PHP через JSON String

К примеру, у меня есть это предложение в отдельном текстовом файле:

A diving spiral attack in which Pikachu head butts downward while 
being surrounded by electricity. 

(Если вам интересно, это часть моего предстоящего фан-сайта, все еще в стадии строительства).

Предложение начинается с строки 6 и использует 2 строки. Поэтому в моем файле JSON я бы написал «6,2». Команда explode() запускается с использованием запятой в качестве разделителя, позволяя мне сохранить это число на две отдельные переменные: $ start и $ length.

$result = explode(",", $sample); // In JSON string, $sample is $i["desc"] 
    $start = $result[0]; 
    $length = $result[1]; 

С переменным Теперь в месте, следующие строки, то будет вызван для выполнения фактической добычи линии за линией.

$file = new SplFileObject("pikachu/pikachu.txt"); 

    for ($i = $start; $i <= ($start+$length); $i++) { 
     $file->seek($i-1); 
     echo "$file"; 
    } 

Я проверил свой сценарий, используя прямой вызов, а не через разбор JSON. Это сработало. Но когда я попытался использовать строку JSON, у меня закончились как Runtime, так и Fatal Error.

Как исправить сценарии, чтобы я мог использовать строку JSON в качестве маркеров для поиска строк из внешнего текста для печати, избегая при этом ошибок времени выполнения и фатальных ошибок?

(EDIT: проблема стала для меня затруднительной, поэтому я решил теперь отключить функцию поиска по очереди. Я вернусь к ней позже. Я оставлю код ниже . для архивных целей)

character.php

<?php 

    $name = $_GET['name']; 
    // Step 1: Get the name from the previous page and store it. 

    $file = file_get_contents("characters/$name/$name.json"); 
    // Step 2: Use the name to find a JSON file for the character (We'll do the moves list later). 

    $json = json_decode($file, true); 
    // Step 3: Decode the JSON file 

    $character = $json["character"][0]["name"]; 
    $group = $json["character"][0]["group"]; 
    $series = $json["character"][0]["series"]; 
    $story = $json["character"][0]["story"]; 
    $snapback = $json["character"][0]["snapback"]; 
    $interrupt = $json["character"][0]["interrupt"]; 
    $hiddenpow = $json["character"][0]["hiddenpow"]; 
    $disrupt = $json["character"][0]["disrupt"]; 
    $assist1 = $json["character"][0]["assist1"]; 
    $assist2 = $json["character"][0]["assist2"]; 
    $assist3 = $json["character"][0]["assist3"]; 
    $counter = $json["character"][0]["counter"]; 
    $bros = $json["character"][0]["bros"]; 
    $party = $json["character"][0]["party"]; 
    $ground = $json["character"][0]["ground"]; 
    $jump = $json["character"][0]["jump"]; 
    $superjump = $json["character"][0]["superjump"]; 
    $launcher = $json["character"][0]["launcher"]; 
    $altlaunch = $json["character"][0]["altlaunch"]; 
    $acfinisher = $json["character"][0]["acfinisher"]; 
    // Step 4: Retrieve variables and store them for use 

    echo "<HTML>\n"; 
    echo "<HEAD>\n"; 
    echo "<TITLE>Marvel & Capcom vs. Pokemon: $character</TITLE>\n\n"; 
    echo "<LINK rel=\"stylesheet\" type=\"text/css\" href=\"http://fonts.googleapis.com/css?family=Roboto\">\n"; 
    echo "<LINK rel=\"stylesheet\" type=\"text/css\" href=\"http://fonts.googleapis.com/css?family=Open+Sans\">\n"; 
    echo "<LINK rel=\"stylesheet\" type=\"text/css\" href=\"media/style.css\">\n"; 
    echo "<SCRIPT type=\"text/javascript\" src=\"media/tabs.js\"></SCRIPT>\n"; 
    echo "<SCRIPT type=\"text/javascript\">\n"; 
    echo "function toggle_visibility(id) {\n"; 
    echo " var movename = id.nextSibling.nextSibling;\n"; 
    echo " if(movename.style.display == \"block\")\n"; 
    echo "  movename.style.display = \"none\";\n"; 
    echo " else\n"; 
    echo "  movename.style.display = \"block\";\n"; 
    echo "}\n"; 
    echo "</SCRIPT>"; 
    echo "</HEAD>\n\n"; 
    echo "<BODY onload=\"init()\">\n\n"; 
    // Step 5: The HTML stuff begins 

    echo "<TABLE id=\"Character\">\n"; 
    echo " <TR>\n"; 
    echo " <TD class=\"Name\">" . strtoupper($character) . "</TD>\n"; 
    echo " <TD class=\"Image\" rowspan=\"4\"><IMG src=\"characters/$name/$name.jpg\"></TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TD class=\"Series\">Series: $series</TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TD class=\"Story\">$story</TD></TR>\n"; 
    // Step 6: Write the variables to the file 

    echo " <TR>\n"; 
    echo " <TD style=\"vertical-align: top\">\n"; 
    echo " <TABLE id=\"$group\">\n"; 

    function moverw ($move) { 
     $subfollow = "FOLLOW>>"; 
     $follow = "FOLLOW>"; 
     if (strpos($move,$subfollow) !== false) 
      $move .= " (followup)"; 
     else if (strpos($move,$follow) !== false) 
      $move .= " (followup)"; 
     $move = str_replace("FOLLOW>>", "<IMG class=\"Followup\" src=\"images/follow.png\" style=\"text-indent: 5px\"> ", $move); 
     $move = str_replace("FOLLOW>", "<IMG class=\"Followup\" src=\"images/follow.png\"> ", $move); 
     return ($move); 
    } 

    function descrw ($desc,$name) { 
     $result = explode(",", $desc); 
     $start = $result[0]; 
     $length = $result[1]; 

     $file = new SplFileObject("characters/$name/$name.txt"); 

     $result = ""; 
     for ($i = $start; $i <= ($start+$length); $i++) { 
      $file->seek($i-1); 
      $result .= $file; 
     } 
     return($result); 
    } 

    function commrw ($command) { 
     $command = str_replace("AM,", "<IMG title=\"Assist Mode\" src=\"images/assist.gif\"> ", $command); 
     $command = str_replace("SM,", "<IMG title=\"Single Mode\" src=\"images/single.gif\"> ", $command); 
     $command = str_replace("BRAWL,", "<IMG title=\"Super Smash Brawl\" src=\"images/brawl.png\"> ", $command); 
     $command = str_replace("uf,", "<IMG class=\"Arrow\" src=\"images/uf.png\">", $command); 
     $command = str_replace("df,", "<IMG class=\"Arrow\" src=\"images/df.png\">", $command); 
     $command = str_replace("ub,", "<IMG class=\"Arrow\" src=\"images/ub.png\">", $command); 
     $command = str_replace("db,", "<IMG class=\"Arrow\" src=\"images/db.png\">", $command); 
     $command = str_replace("u,", "<IMG class=\"Arrow\" src=\"images/u.png\">", $command); 
     $command = str_replace("f,", "<IMG class=\"Arrow\" src=\"images/f.png\">", $command); 
     $command = str_replace("d,", "<IMG class=\"Arrow\" src=\"images/d.png\">", $command); 
     $command = str_replace("b,", "<IMG class=\"Arrow\" src=\"images/b.png\">", $command); 
     $command = str_replace("+", "<IMG class=\"Plus\" src=\"images/plus.png\">", $command); 
     $command = str_replace("AP", "<IMG class=\"Button\" src=\"images/punch.png\">", $command); 
     $command = str_replace("AK", "<IMG class=\"Button\" src=\"images/kick.png\">", $command); 
     $command = str_replace("A1", "<IMG class=\"Button\" title=\"Assist 1\" src=\"images/assist1.png\">", $command); 
     $command = str_replace("A2", "<IMG class=\"Button\" title=\"Assist 2\" src=\"images/assist2.png\">", $command); 
     $command = str_replace("AB", "<IMG class=\"Button\" title=\"Assist\" src=\"images/assist.png\">", $command); 
     $command = str_replace("LP", "<IMG class=\"Button\" title=\"Jab\" src=\"images/jab.png\">", $command); 
     $command = str_replace("LK", "<IMG class=\"Button\" title=\"Short\" src=\"images/short.png\">", $command); 
     $command = str_replace("MP", "<IMG class=\"Button\" title=\"Strong\" src=\"images/strong.png\">", $command); 
     $command = str_replace("MK", "<IMG class=\"Button\" title=\"Forward\" src=\"images/forward.png\">", $command); 
     $command = str_replace("HP", "<IMG class=\"Button\" title=\"Fierce\" src=\"images/fierce.png\">", $command); 
     $command = str_replace("HK", "<IMG class=\"Button\" title=\"Roundhouse\" src=\"images/roundhouse.png\">", $command); 
     $command = str_replace("FOLLOW>>", "<IMG class=\"Followup\" src=\"images/follow.png\" style=\"text-indent: 5px\"> ", $command); 
     $command = str_replace("FOLLOW>", "<IMG class=\"Followup\" src=\"images/follow.png\"> ", $command); 
     $command = str_replace("degrees", "&deg;", $command); 
     return ($command); 
    } 

    function typerw ($type) { 
     $type = str_replace("BUG.", "<IMG src=\"images/bug.png\">", $type); 
     $type = str_replace("CYBER.", "<IMG src=\"images/cyber.png\">", $type); 
     $type = str_replace("DARK.", "<IMG src=\"images/dark.png\">", $type); 
     $type = str_replace("DRAGON.", "<IMG src=\"images/dragon.png\">", $type); 
     $type = str_replace("ELECTRIC.", "<IMG src=\"images/electric.png\">", $type); 
     $type = str_replace("FAIRY.", "<IMG src=\"images/fairy.png\">", $type); 
     $type = str_replace("FIGHTING.", "<IMG src=\"images/fighting.png\">", $type); 
     $type = str_replace("FIRE.", "<IMG src=\"images/fire.png\">", $type); 
     $type = str_replace("FLYING.", "<IMG src=\"images/flying.png\">", $type); 
     $type = str_replace("GHOST.", "<IMG src=\"images/ghost.png\">", $type); 
     $type = str_replace("GRASS.", "<IMG src=\"images/grass.png\">", $type); 
     $type = str_replace("GROUND.", "<IMG src=\"images/ground.png\">", $type); 
     $type = str_replace("ICE.", "<IMG src=\"images/ice.png\">", $type); 
     $type = str_replace("LIGHT.", "<IMG src=\"images/light.png\">", $type); 
     $type = str_replace("NORMAL.", "<IMG src=\"images/normal.png\">", $type); 
     $type = str_replace("PSYCHIC.", "<IMG src=\"images/psychic.png\">", $type); 
     $type = str_replace("STEEL.", "<IMG src=\"images/steel.png\">", $type); 
     $type = str_replace("WATER.", "<IMG src=\"images/water.png\">", $type); 
     return ($type); 
    } 

    function noterw ($note) { 
     $note = str_replace(".AM.", "<IMG title=\"Assist Mode\" src=\"images/assist.gif\"> ", $note); 
     $note = str_replace(".SM.", "<IMG title=\"Single Mode\" src=\"images/single.gif\"> ", $note); 
     $note = str_replace(".HP.", "<IMG class=\"HiddenPower\" title=\"Hidden Power\"src=\"images/hiddenpower.png\">", $note); 
     return ($note); 
    } 

    foreach ($json["character"][0]["moves"] as $i) { 

     if ($i["flag"] == "normal") { 
      $move = strtoupper($i["move"]); 
      $desc = $i["desc"]; 
      $command = $i["comm"]; 
      $type = $i["type"]; 
      $note = $i["note"]; 
      echo " <TR>\n"; 
      echo " <TD class=\"MoveName Normal\"><A href=\"javascript:;\" onclick=\"toggle_visibility(this);\">" . moverw($move) . "</A>\n"; 
      echo " <DIV class=\"Details\">" . descrw($desc,$name) . "</DIV></TD>\n"; 
      echo " <TD class=\"Command\">" . commrw($command) . "</TD>\n"; 
      echo " <TD class=\"Type\">" . typerw($type) . "</TD>\n"; 
      echo " <TD class=\"Note\">" . noterw($note) . "</TD></TR>\n"; 
     } 
     if ($i["flag"] == "special") { 
      $move = strtoupper($i["move"]); 
      $command = $i["comm"]; 
      $type = $i["type"]; 
      $note = $i["note"]; 
      echo " <TR>\n"; 
      echo " <TD class=\"MoveName Special\"><A href=\"javascript:;\" onclick=\"toggle_visibility(this);\">" . moverw($move) . "</A>\n"; 
      echo " <DIV class=\"Details\">" . $i["desc"] . "</DIV></TD>\n"; 
      echo " <TD class=\"Command\">" . commrw($command) . "</TD>\n"; 
      echo " <TD class=\"Type\">" . typerw($type) . "</TD>\n"; 
      echo " <TD class=\"Note\">" . noterw($note) . "</TD></TR>\n"; 
     } 
     if ($i["flag"] == "hyper") { 
      $move = strtoupper($i["move"]); 
      $command = $i["comm"]; 
      $type = $i["type"]; 
      $note = $i["note"]; 
      echo " <TR>\n"; 
      echo " <TD class=\"MoveName Hyper\"><A href=\"javascript:;\" onclick=\"toggle_visibility(this);\">" . moverw($move) . "</A>\n"; 
      echo " <DIV class=\"Details\">" . $i["desc"] . "</DIV></TD>\n"; 
      echo " <TD class=\"Command\">" . commrw($command) . "</TD>\n"; 
      echo " <TD class=\"Type\">" . typerw($type) . "</TD>\n"; 
      echo " <TD class=\"Note\">" . noterw($note) . "</TD></TR>\n"; 
     } 
     if ($i["flag"] == "final") { 
      $move = strtoupper($i["move"]); 
      $command = $i["comm"]; 
      $type = $i["type"]; 
      $note = $i["note"]; 
      echo " <TR>\n"; 
      echo " <TD class=\"MoveName Final\"><A href=\"javascript:;\" onclick=\"toggle_visibility(this);\">" . moverw($move) . "</A>\n"; 
      echo " <DIV id=\"Final\" class=\"Details\">" . $i["desc"] . "</DIV></TD>\n"; 
      echo " <TD class=\"Command\">" . commrw($command) . "</TD>\n"; 
      echo " <TD class=\"Type\">" . typerw($type) . "</TD>\n"; 
      echo " <TD class=\"Note\">" . noterw($note) . "</TD></TR>\n"; 
     } 
    } 
    // Step 7: Write the moves. When Command and Type are parsed, execute respective rewriters. Saves me from typing lots, hun ;) 

    echo " </TABLE></TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TD colspan=\"2\">\n"; 
    echo " <UL id=\"tabs\">\n"; 
    echo " <LI><A href=\"#Single\" onclick=\"showTab()\">SINGLE MODE</A></LI>\n"; 
    echo " <LI><A href=\"#Assist\" onclick=\"showTab()\">ASSIST MODE</A></LI>\n"; 
    echo " <LI><A href=\"#Combo\" onclick=\"showTab()\">COMBO PROFILE</A></LI>\n"; 
    echo " <LI><A href=\"#Attack\" onclick=\"showTab()\">ATTACK PROFILE</A></LI></UL>\n"; 
    echo " <DIV class=\"tabContent\" id=\"Single\">\n"; 
    echo " <TABLE id=\"Single\" border=1>\n"; 
    echo " <TR>\n"; 
    echo " <TH>Snapback:</TH>\n"; 
    echo " <TD>$snapback</TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH>Interrupt:</TH>\n"; 
    echo " <TD>$interrupt</TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH>Hidden Power:</TH>\n"; 
    echo " <TD>$hiddenpow</TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH class=\"Header Rumble\"colspan=\"2\">RUMBLE CHART</TH></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TD colspan=\"2\"></TH></TR></TABLE></DIV>\n"; 
    echo " <DIV class=\"tabContent\" id=\"Assist\">\n"; 
    echo " <TABLE id=\"Assist\" border=1>\n"; 
    echo " <TR>\n"; 
    echo " <TH>Disrupt:</TH>\n"; 
    echo " <TD>$disrupt</TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH colspan=2>Assist Attacks</TH></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH><IMG class=\"Button\" title=\"Assist\" src=\"images/assist.png\"></TH>\n"; 
    echo " <TD>$assist1</TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH><IMG class=\"Button\" title=\"Assist\" src=\"images/assist.png\"><IMG class=\"Plus\" src=\"images/plus.png\"><IMG class=\"Button\" title=\"Fierce\" src=\"images/fierce.png\"></TH>\n"; 
    echo " <TD>$assist2</TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH><IMG class=\"Button\" title=\"Assist\" src=\"images/assist.png\"><IMG class=\"Plus\" src=\"images/plus.png\"><IMG class=\"Button\" title=\"Roundhouse\" src=\"images/roundhouse.png\"></TH>\n"; 
    echo " <TD>$assist3</TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH>Cross-Over Counter:</TH>\n"; 
    echo " <TD>$counter</TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH colspan=2>Super Smash Melee</TH></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH>Bros. Attack:</TH>\n"; 
    echo " <TD>$bros</TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH>Party Attack:</TH>\n"; 
    echo " <TD>$party</TD></TR></TABLE></DIV>\n"; 
    echo " <DIV class=\"tabContent\" id=\"Combo\">\n"; 
    echo " <TABLE id=\"Combo\" border=1>\n"; 
    echo " <TR>\n"; 
    echo " <TH colspan=2>???</TH></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH>Ground:</TH>\n"; 
    echo " <TD>$ground</TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH>Jump:</TH>\n"; 
    echo " <TD>$jump</TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH>Super Jump:</TH>\n"; 
    echo " <TD>$superjump</TD></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH colspan=2></TH></TR>\n"; 
    echo " <TR>\n"; 
    echo " <TH>Launcher:</TH>\n"; 
    echo " <TD>$launcher</TD></TR>\n"; 

    if ($altlaunch != null) { 
     echo " <TR>\n"; 
     echo " <TH>Alternate Launch:</TH>\n"; 
     echo " <TD>$altlaunch</TD></TR>\n"; 
    } 

    echo " <TR>\n"; 
    echo " <TH>AC Finishers:</TH>\n"; 
    echo " <TD>$acfinisher</TD></TR></TABLE></DIV>\n"; 
    echo " <DIV class=\"tabContent\" id=\"Attack\">\n"; 
    echo " $test 4\n"; 
    echo " </DIV>\n"; 
    echo " </TD></TR></TABLE></TD></TR></TABLE>\n\n"; 
    echo "</BODY></HTML>"; 

    ?> 

$ name.json, где $ имя это имя персонажа (используя Пикачу в качестве демонстрационного примера):

{"character":[ 
     { 
      "name":"Pikachu", 
      "group":"Pokemon", 
      "series":"Pokemon", 
      "story":"To-do...", 
      "moves":[ 
       { 
        "flag":"normal", 
        "move":"Discharge", 
        "desc":"3,2", 
        "comm":"Press HP (crouch) (air)", 
        "type":"ELECTRIC.", 
        "note":"Notes" 
       }, 
       { 
        "flag":"normal", 
        "move":"Electric Screw", 
        "desc":"6,2", 
        "comm":"Tilt d,+HP [air]", 
        "type":"ELECTRIC.", 
        "note":"Notes" 
       }, 
       { 
        "flag":"normal", 
        "move":"Tackle", 
        "desc":"9,1", 
        "comm":"Tap f, , f,", 
        "type":"NORMAL.", 
        "note":"Notes" 
       }, 
       { 
        "flag":"special", 
        "move":"Quick Attack", 
        "desc":"11,2", 
        "comm":"Tap any direction and Press AP (air)", 
        "type":"ELECTRIC.FIGHTING.", 
        "note":"Notes" 
       }, 
       { 
        "flag":"special", 
        "move":"Thunder Jolt", 
        "desc":"14", 
        "comm":"Motion d,df,f,+AP", 
        "type":"ELECTRIC.", 
        "note":"Notes" 
       }, 
       { 
        "flag":"special", 
        "move":"Electro Ball", 
        "desc":"16,2", 
        "comm":"Motion d,df,f,+AP [air]", 
        "type":"ELECTRIC.", 
        "note":"Notes" 
       }, 
       { 
        "flag":"special", 
        "move":"Thunder", 
        "desc":"19,2", 
        "comm":"Motion f,d,df,+AP (air)", 
        "type":"ELECTRIC.", 
        "note":"Notes" 
       }, 
       { 
        "flag":"special", 
        "move":"Electric Chair", 
        "desc":"22,2", 
        "comm":"Motion f,df,d,db,b,+AP", 
        "type":"ELECTRIC.", 
        "note":"Notes" 
       }, 
       { 
        "flag":"hyper", 
        "move":"Thunder Shock", 
        "desc":"25,2", 
        "comm":"Motion d,df,f,+APAP (air)", 
        "type":"ELECTRIC.", 
        "note":"Notes" 
       }, 
       { 
        "flag":"hyper", 
        "move":"Thunder Bolt", 
        "desc":"28,1", 
        "comm":"Motion d,df,f,+AKAK (air)", 
        "type":"ELECTRIC.", 
        "note":"Notes" 
       }, 
       { 
        "flag":"hyper", 
        "move":"Skull Bash", 
        "desc":"30,2", 
        "comm":"Motion d,db,b,+APAP (air)", 
        "type":"ELECTRIC.FIGHTING.", 
        "note":"Notes" 
       }, 
       { 
        "flag":"final", 
        "move":"Volt Tackle", 
        "desc":"33,2", 
        "comm":"Motion d,df,f,d,df,f,+APAP (air)", 
        "type":"ELECTRIC.", 
        "note":"Notes" 
       }], 
      "snapback":"Crouching Forward", 
      "interrupt":"Thunder Jolt, Thunder", 
      "hiddenpow":"Hidden Power Enhancements (Line per line lookup)", 
      "disrupt":"Thunder", 
      "assist1":"Thunder Jolt", 
      "assist2":"Thunder", 
      "assist3":"Quick Attack", 
      "counter":"Thunder", 
      "bros":"Skull Bash", 
      "party":"Thunder Bolt", 
      "ground":"Punch to Kick", 
      "jump":"Punch to Kick", 
      "superjump":"Zig Zag", 
      "launcher":"Standing Roundhouse", 
      "altlaunch":"Crouching Strong", 
      "acfinisher":"Discharge, Electric Screw, Quick Attack, Electro Ball, Thunder, Thunder Shock, Thunder Bolt, Skull Bash" 
     } 
    ]} 
+0

'6,2' не является допустимым JSON. Массив JSON будет '[6, 2]'. – Barmar

+0

@Barmar Нужно ли положить скобки в строку этого файла JSON? Прямо сейчас, я его перечислял как «desc»: «6,2». – Wammy

+1

Не важно, как вы устанавливаете '$ start' и' $ length', когда вы попадаете в 'SplFileObject'. Сообщение об ошибке в вашей неудачной версии указывает, что вы пытаетесь открыть '/ .txt' вместо'/pikachu/pikachu.txt' – Barmar

ответ

0

проблема в этом f и не имеет никакого отношения к использованию JSON. Это просто проблема с переменной областью.

function descrw ($desc) { 
    $result = explode(",", $desc); 
    $start = $result[0]; 
    $length = $result[1]; 

    $file = new SplFileObject("$name/$name.txt"); 
    for ($i = $start; $i <= ($start+$length); $i++) { 
     $file->seek($i-1); 
     echo "$file"; 
    } 
    return(0); 
} 

переменной $name не определен, поэтому он пытается открыть файл /.txt. Вам нужно изменить функцию, поэтому в качестве аргумента требуется значение $name. А так как вызывающий абонент descrw ожидает, что он вернет строку, чтобы ее можно было конкатенировать, descrw не должен делать свой собственный echo.

function descrw ($desc, $name) { 
    $result = explode(",", $desc); 
    $start = $result[0]; 
    $length = $result[1]; 

    $file = new SplFileObject("$name/$name.txt"); 

    $result = ''; 
    for ($i = $start; $i <= ($start+$length); $i++) { 
     $file->seek($i-1); 
     $result .= $file; 
    } 
    return($result); 
} 

Затем измените место, где это называется передать аргумент:

echo " <DIV class=\"Details\">" . descrw($desc, $name) . "</DIV></TD>\n"; 
+0

(Извинения за поздний ответ, исправление формата кода) Это исправление действительно помогло. Все, что осталось от меня, это пересмотреть эту последнюю часть, чтобы она появилась внутри белого ящика. Если вы нажмете на имя перемещения в демо, вы увидите, что есть белый DIV. Текст, к сожалению, был размещен вне его. Я смог исправить его, пересмотрев код возврата, но он дает мне только одну строку, как показано в демо. – Wammy

+0

'descrw' должен возвращать строку, а не ее эхо, чтобы конкатенация работала должным образом. – Barmar

+0

Это было! Я обновил строку PHP для остальных классов CSS (обычный, специальный, Hyper, Final). Я знаю очень мало PHP (то есть: новичок, например, эхо и сохранение переменных), но я никогда раньше не делал таких продвинутых вещей. Я с облегчением узнал, что С.О. это большой спасатель. Спасибо, Бармар. – Wammy

Смежные вопросы