php preg替换不替换链接

时间:2016-05-11 07:12:10

标签: php regex twitter hyperlink preg-replace

更新已解决(在这里添加答案,所以你不要浪费你的时间)这只是为了帮助同一个泡菜中的其他人

我刚刚注意到在将html部分转换为:

的帖子中正在剪切链接文本
<a href="https://twitter.com/digitalOcean/status/723205273226190848" target="_blank">https://twitter.com/digitalOcean/sta...05273226190848</a>

因此失去了我的替换的/status部分

将我的表情改为

~(<a href="https?://twitter.com)/(.*)/status/(.*)">(https?://twitter.com)/(.*)<\/a>~

解决了这个问题,对不起那些家伙=)

帮助他人的原始问题

我发布了另一个关于我的插件的问题,使用preg_replace只是为了得不到回复,所以我开始学习更多(总是一个好主意);)

我设法提出了更好的解决方案,但我需要一些帮助。这是我的新代码:

// embed tweet https://twitter.com/DrCustUmz/status/726561400617840641
$embed_tweet =  '
  <blockquote class="twitter-tweet" data-cards="hidden" data-lang="en">
    <a href="https://twitter.com/\2/status/\3"></a>
  </blockquote>
';
$this->post['message'] = preg_replace('~(<a href="https?://twitter.com)/(.*)/status/(.*)">(https?://twitter.com)/(.*)/status/(.*)<\/a>~', $embed_tweet, $this->post['message']);

// embed vine http://vine.co/v/bXZre5gtYgT/embed/postcard

$embed_player =  '<iframe src="https://vine.co/v/\\4" width="480" height="480" frameborder="0"></iframe>';

$this->post['message'] = preg_replace('~(<a href="https?://vine.co)/v/(.*)">(https?://vine.co)/v/(.*)<\/a>~', $embed_player, $this->post['message']);

那么它呢?

好问题,在我的网站上,当用户发布链接时,一旦提交帖子,它就会将其格式化为href。 I.E.发布http://vine.co/v/bXZre5gtYgT/embed/postcard变为<a href="http://vine.co/v/bXZre5gtYgT/embed/postcard" target="_blank">http://vine.co/v/bXZre5gtYgT/embed/postcard</a>

这个替换的作用是找到twitter和vine链接并自动插入该帖子的嵌入代码。

那么什么不对?

The Vine取代我还没有发现任何错误,但Twitter部分不想嵌入以下链接:

https://twitter.com/digitalOcean/status/723205273226190848

但确实取代:

https://twitter.com/DrCustUmz/status/726561400617840641
and
https://twitter.com/vBulletin/status/697116051079692288

我不能为我的生活弄明白这一点,因为除了用户名和帖子号码之外,链接没有区别。所以我的表情可能有问题吗?

这里是替换的链接:

 https://twitter.com/digitalOcean/status/723205273226190848

这是我的正则表达式:

~(<a href="https?://twitter.com)/(.*)/status/(.*)">(https?://twitter.com)/(.*)/status/(.*)<\/a>~

我没有看到一个问题......

是的......关于那个,我倾向于忘记专门问一个问题我想你们都知道我想弄清楚lol

所以我猜...为什么我的preg_replace适用于某些链接但不是全部?

对此的任何帮助将不胜感激:)

这不是我之前的问题的重复,我已经完全了解了我自己的所有问题,并且我已经准备好自己回答。

1 个答案:

答案 0 :(得分:1)

我刚刚注意到在将html部分转换为:

的帖子中正在剪切链接文本
<a href="https://twitter.com/digitalOcean/status/723205273226190848" target="_blank">https://twitter.com/digitalOcean/sta...05273226190848</a>

因此失去了我的替换的/status部分

将我的表情改为

~(<a href="https?://twitter.com)/(.*)/status/(.*)">(https?://twitter.com)/(.*)<\/a>~

解决了这个问题,对不起那些家伙=)