0

echo ステートメントの出力が間違っているという小さな問題があります。たとえば、私がするとき

echo "<div id=\"twitarea\">" . fetchtwitter($rss) . "</div>";

関数の出力が表示されますが、twitarea divの外側に表示されます。この動作、おそらく構文の原因は何ですか?

前もって感謝します

実際の機能はこちら

require_once('includes/magpie/rss_fetch.inc');
$rssaldelo = fetch_rss('http://twitter.com/statuses/user_timeline/12341234.rss');
function fetchtwitter($rsskey){
foreach ($rsskey->items as $item) {
    $href = $item['link'];
    $title = $item['title'];
    print "<li class=\"softtwit\"><a href=" . $href . "    target=\"_blank\">$title</a></li><br>";
    } }
4

5 に答える 5

3

単に:

<?php
echo "<div id=\"twitarea\">";
fetchtwitter($rss);
echo "</div>";
?>

fetchtwitter($ rss)は出力をエコーし​​ています(返されません)。

これで、fetchtwitter()を変更する必要はありません。

于 2010-03-18T15:56:13.867 に答える
1

fetchtwitter()echo()文字列を返す代わりに、おそらくそれ自体を実行します。この関数はecho、文字列が出力される前に、文字列全体を出力する準備をしながら実行されます。

于 2010-03-18T15:48:26.747 に答える
1

fetchtwitter(...)は、出力を返すのではなく、ブラウザに直接書き込みますか?次のようなものを試してください:

<?php

ob_start();
fetchtwitter($rss);
$twitter = ob_get_clean();

echo "<div id=\"twitarea\">" . $twitter . "</div>";

?>

または、のソースを変更できる場合は、それをingする代わりに、fetchtwitter()連結して文字列にするようにします。returnecho

于 2010-03-18T15:48:51.253 に答える
0

区切り文字を試すことができます

$twitter = fetchtwitter($rss);
ob_start();
echo <<<HTML;
<div id="twitarea">$twitter</div>
HTML;
echo ob_get_clean();

update このように関数を変更することもできます

require_once('includes/magpie/rss_fetch.inc');
$rssaldelo = fetch_rss('http://twitter.com/statuses/user_timeline/12341234.rss');
function fetchtwitter($rsskey){ 
  $bfr =""; 
  foreach ($rsskey->items as $item){
    $href = $item['link'];
    $title = $item['title'];
    $bfr .= "<li class=\"softtwit\"><a href=" . $href . "> target=\"_blank\">$title</a></li><br>";
  } 
  return $bfr; 
}
于 2010-03-18T15:58:27.520 に答える
0

あなたが私のコメントを見なかった場合に備えて。

fetchtwitter()そこにあるエコーではなく、関数でリターンを使用してみてください。

于 2010-03-18T16:01:50.003 に答える