我对编码很新,并且想尝试为我的网站构建一个Twitter应用程序。在一点帮助下,我能够掌握所有基础知识,但我现在正在努力解决的是两件事:
我似乎已经找到了解决这两个问题的答案,但对于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>
答案 0 :(得分:0)
您没有设置编码。设置编码utf-8。
答案 1 :(得分: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>