preq_replace一个url但最后一个单词也被替换

时间:2016-06-23 09:08:57

标签: php regex

我正在使用名为notwitterapi的Twitter API插件。 我在更换推文中的链接时遇到问题。它取代了链接并在其周围放置了一个锚点,但它也取了推文的最后一个字,所以它看起来像这样:

  

Lorem ipsum dolor sit amet,consectetuer adipiscinghttp://pic.twitter.com/

而不是:

  

Lorem ipsum dolor sit amet,consectetuer adipiscing http://pic.twitter.com/

我几乎没有PHP经验。 这是从文本中重新出现链接的代码:

$find = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), 'js-tweet-text')]");
$data .= '"tweet":"'. preg_replace(
    "@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@", 
    "<a href='$1' target='blank'>$1</a>",
    htmlspecialchars($find->item(0)->nodeValue, ENT_QUOTES)) . '"';

这是取代它的部分:

$data = str_replace("pic.twitter.com", "http://pic.twitter.com", $data);

以下是完整代码pastebin的链接。

我试过更改正则表达式,但由于我不知道问题出在哪里,我不确定它是否有用。

enter image description here

修改

  

string(63)&#34; Mediamonks推文链接test6.pic.twitter.com/fuRbNYdCgs&#34;字符串(63)&#34; Mediamonks推文链接test5.pic.twitter.com/aSZC3duVgY&#34;字符串(63)&#34; Mediamonks推文链接test4.pic.twitter.com/zbieGQ8Lob&#34;字符串(62)&#34; Mediamonks推文链接test3pic.twitter.com/3xlc1Duaqz"字符串(62)&#34; Mediamonks推文链接test2pic.twitter.com/SrM0kGnMFu&#34;字符串(61)&#34; Mediamonks推文链接testpic.twitter.com/T7HMxZPXqp&#34;

0 个答案:

没有答案