0

我对编码很陌生,想尝试为我的网站构建一个 twitter 应用程序。在一些帮助下,我能够掌握所有基础知识,但我现在正在努力解决两件事:

  1. 将 Twitter XML 数据转换为可点击的链接
  2. 确保 XML 文本正确呈现(似乎 XML 中的“”(引号)呈现不正确(如““”)。

我似乎已经找到了如何修复这两个问题的答案,但是对于 PHP 来说太新了,我不确定如何在我的代码中实现这两个修复。任何帮助将不胜感激。

我发现问题1的解决方案:

function twitterify($status) {
$status = preg_replace("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t< ]*)#", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $status);
$status = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ]*)#", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $status);
$status = preg_replace("/@(\w+)/", "<a href=\"http://www.twitter.com/\\1\" target=\"_blank\">@\\1</a>", $status);
$status = preg_replace("/#(\w+)/", "<a href=\"http://search.twitter.com/search?q=\\1\" target=\"_blank\">#\\1</a>", $status);
return $status;
}

我发现问题 2 的解决方案是使用 html_entity_decode... 但我再次不确定如何在我的代码中实现这两个解决方案。

到目前为止我的代码:

<?php
            $xmldata = 'https://twitter.com/statuses/user_timeline/carmeloanthony.xml';
            $open = fopen($xmldata, 'r');
            $content = stream_get_contents($open);
            fclose($open);
            $xml = new SimpleXMLElement($content);

        ?>
    <table class="table table-striped">
        <?php

        foreach($xml->status as $status)
        {

        ?>
        <tr>
            <td> <img src=" <?php echo $status->user->profile_image_url; ?>" /> </td>
            <td><strong> <?php echo $status->user->name; ?></strong> <i>@<?php echo $status->user->screen_name; ?></i> <br /> <?php echo $status->text; ?></td>  
            <td style="width: 40px;"><?php echo date("M j",strtotime($status->created_at)); ?></td>
        </tr>
          <?php
        }

        ?>
    </table>
4

2 回答 2

0

你没有设置编码。设置编码 utf-8。

于 2012-08-02T16:24:02.067 回答
0

这就是我所得到的......得跑了!所需要做的就是更改正则表达式以查找位于行尾的链接......或在换行符之前

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
<?php
    $xmldata = 'https://twitter.com/statuses/user_timeline/carmeloanthony.xml';
    $open = fopen($xmldata, 'r');
    $content = stream_get_contents($open);
    fclose($open);
    $xml = new SimpleXMLElement($content);
?>
<table class="table table-striped">
    <?php
    foreach($xml->status as $status)
    {
    $statusText=$status->text;
    $pattern = '/((www|http:\/\/)[^ ]+) /';
    $replacement = '<a href="\1">\1</a>';
    $statusText = preg_replace($pattern, $replacement, $statusText);
    ?>
    <tr>
        <td> <img src="<?php echo $status->user->profile_image_url; ?>" /> </td>
        <td><strong><?php echo $status->user->name; ?></strong> <i>@<?php echo $status->user->screen_name; ?></i> <br /><?php echo $statusText; ?></td>  
        <td style="width: 40px;"><?php echo date("M j",strtotime($status->created_at)); ?></td>
    </tr>
      <?php
    }

    ?>
</table>
于 2012-08-02T17:00:34.677 回答