【发布时间】:2015-07-18 17:13:26
【问题描述】:
您好,我正在使用 simpleXML 来显示 news.google.com 供稿。
显示的条目以这种方式链接到原始文章:
我需要条目来链接到这个: http://WEBSITEWITHNEWS.COM/ARTICLEURLHERE
原因是 Facebook Sharer 无法解释以下链接:
Facebook Sharer 需要它看起来像这样:
https://www.facebook.com/sharer/sharer.php?u=http://WEBSITEWITHNEWS.COM/ARTICLEURLHERE
我是否可以使用 regex(str_replace 或 preg_match) 删除 Google 重定向 URL,以便社交共享网站可以识别该链接?
Google 重定向 URL 是动态的,因此每次都会略有不同,因此我需要一些可以替换每个变体的东西。
我的工作,功能代码:
$feed = file_get_contents("https://news.google.com/news/feeds?q=KEYWORD&output=rss");
$xml = new SimpleXmlElement($feed);
foreach ($xml->channel->item as $entry){
$date = $entry->pubDate;
$date = strftime("%m/%d/%y %I:%M:%S%P", strtotime($date));
$desc = $entry->description;
$desc = str_replace("and more »", "","$desc");
$desc = str_replace("font-size:85%", "font-size:100%","$desc");
?>
<div class="item"></div>
<?php echo $desc; ?>
<div class="date">
<?php echo $date; ?></div>
<?php } ?>
$desc = $entry->description;
$date = $entry->pubDate;
$date = strftime("%A, %m/%d/%Y, %H:%M:%S", strtotime($date));
$desc = str_replace("and more »","x","and more »");
echo $date;
echo $desc;
}
我使用 $desc 而不是 $link 来显示链接,但是如果您想使用 str_replace 或 preg_match $link 而不是 $desc,则使用 Google 重定向 URL 的文章的 URL 仍然在 $link 中
以下链接到有效的 Google 新闻提要: https://news.google.com/news/feeds?q=KEYWORD&output=rss
如果您知道如何解决此问题,您就是英雄。谢谢溢出者
【问题讨论】:
-
所以在
$desc,如果你有href="http://news.google.com/news/url?sa=t&amp;fd=R&amp;ct2=us&amp;usg=AFQjCNHG6ECOl4eSYKUWwztaiXMvxZGi1A&amp;clid=c3a7d30bb8a4878e06b80cf16b898331&amp;cid=52778831966961&amp;ei=oRRMVfjOLNqs3AGijoDoCQ&amp;url=http://www.wordstream.com/blog/ws/2015/05/06/adwords-shortcuts",你会想要href="https://www.facebook.com/sharer/sharer.php?u=http://www.wordstream.com/blog/ws/2015/05/06/adwords-shortcuts"吗? -
嗯,是的,有点。我希望能够让人们分享这篇文章。如果您使用 $desc 按照您所说的方式编写它,那就太好了。但是,如果我可以删除 $link 中的重定向 url,那就更好了。
-
重定向 URL 是前面的
&amp;url=? -
是的,就像你说的那样。我想删除整个 URL,包括 &url=。所以 all(.*) 直到第二个 http://
标签: regex rss preg-match simplexml str-replace