0

重複の可能性:
PHPで有用なエラーメッセージを取得するにはどうすればよいですか?

私は新年の決議の一部から始めて、xmlフィードで解析しようとしていることの一部として、phpを学び、<a>それらをxmlフィードのイベントページにリンクするタグでラップされたイベントの名前をエコーアウトすることにしました。サイト。

私はそれをすべて取り入れたと思いますが、なぜこれが機能しないのかわかりません。空白のページを取得するだけです。誰かが私を正しい方向に向けることができれば、それは大いにありがたいです、乾杯

<?php 
  // F1 W/H xml feed
  $xml = simplexml_load_file('http://whdn.williamhill.com/pricefeed/openbet_cdn?action=template&template=getHierarchyByMarketType&classId=5&marketSort=HH&filterBIR=N');

  foreach ($xml->response->williamhill->class->type as $type) {
    $type_attrib = $type->attributes();
    echo "<h2>".$type_attrib['name']."</h2>"; //Title - in this case f1 championship
} ?>


<ul>
  <?php 
      foreach($type->market as $event) {
          echo "<li>";
          echo "<a href="$event_attributes['url']">";
          echo $event_attributes['name'];
          echo "</a>";
          echo "</li>";
      }
  ?>
</ul>
4

6 に答える 6

4
echo "<a href="$event_attributes['url']">";

その行をに変更してみてください

echo "<a href=\"".$event_attributes['url']."\">";

PHPパーサーはこれについてかなり面白いです。通常、1つを選択してそれに固執するか、必要に応じて一重引用符と二重引用符の両方を使用します。二重引用符付きの文字列は変数に対して解析されることを覚えておいてください。

$hello = "Hello";
echo "$hello master";

と同じです

$hello ="Hello";
echo $hello.' master';
于 2013-01-22T22:11:28.220 に答える
1

PHPスクリプトをテストしているときは、エラーをオンにすると便利です。PHPは、実際に何も表示されない理由を教えてくれます。

error_reporting(E_ALL);

通常;、変数名を見逃したり、入力を間違えたりします。

あなたの場合、エラーはここにあります:

echo "<a href="$event_attributes['url']">";

誤って文字列を二重引用符で終了したため、PHPは文字列がここで終了したと見なします。

echo "<a href="

これは、二重引用符が文字列を閉じないため、一重引用符を使用すると非常に便利な場合があります。

echo '<a href="' . $event_attributes['url'] . '">';

PHPの単一引用符と二重引用符の主な違いは、二重引用符には特別な巧妙な解析規則があり、一重引用符にはないことです。例えば:

$myVar = "BLAH";
echo "Example $myVar"; // Example BLAH
echo 'Example $myVar'; // Example $myVar
于 2013-01-22T22:14:21.827 に答える
1

順序付けされていないリストでは、ドットを使用して文字列を連結し、次のように二重引用符をエスケープする必要があります。

echo "<a href=\"".$event_attributes['url']."\">";

それ以外の

echo "<a href="$event_attributes['url']">";

適切な文字列連結を使用していないため、この例ではエラーが発生します。ただし、正しい連結を使用しても、としてレンダリングされるため<a href=http://someurl>、html標準に従って二重引用符を追加する必要があります。したがって、二重引用符で囲む必要があります。

于 2013-01-22T22:14:28.013 に答える
1

'aまたはaの使用を切り替える必要があることに悩まされたくない場合は"、php代替構文を使用することをお勧めしますphp代替構文

与えられたコードでそれは次のようになります

<?php 
// F1 W/H xml feed
$xml = simplexml_load_file('http://whdn.williamhill.com/pricefeed/openbet_cdn?action=template&template=getHierarchyByMarketType&classId=5&marketSort=HH&filterBIR=N');

foreach ($xml->response->williamhill->class->type as $type) {
    $type_attrib = $type->attributes();
    echo "<h2>".$type_attrib['name']."</h2>"; //Title - in this case f1 championship
} ?>

<ul>
    <?php foreach($type->market as $event):?>
        <li>
            <a href="<?php echo $event_attributes['url']; ?>">
                <?php echo $event_attributes['name']; ?>
            </a>
        </li>
    <? endforeach;?>
</ul>

これがもたらす利点の1つは、他のすべてを記述し、他の人がパフォーマンスの低下を主張するのと同じように、プレゼンテーションの部分であるphpコードと明確に区​​別できるため、よりクリーンなコードが生成されることです。選択はあなた次第ですhtml<?php ?>

于 2013-01-22T23:06:28.237 に答える
0

変化する

echo "<a href="$event_attributes['url']">";

にとって

echo "<a href=".$event_attributes['url'].">";
于 2013-01-22T22:10:41.330 に答える
0

あなたはあなたがあなたを持っているあなたの秒の期間を逃してechoいます$event_attributes['url']

<?php 
  foreach($type->market as $event) {
      echo "<li>";
      echo "<a href=".$event_attributes['url'].">";
      echo $event_attributes['name'];
      echo "</a>";
      echo "</li>";
  }

?>

エラーログを有効にすることをお勧めします。これにより、スクリプトの問題のある行を知ることができます。

于 2013-01-22T22:10:53.490 に答える