字符串以“RT”开头时标记

时间:2012-02-05 17:29:28

标签: php regex

在数据库中有很多推文,我想用[RT]替换“RT @username:...其余推文”中的RT,但显然只有当“RT”位于数据库的开头时才会鸣叫。 (函数应该不区分大小写)

所以:输入就是例如

RT @username I'm having one jolly good time!!
RT @username RT @username this is fun
I am not using RT as a label - I use my own "retweet" label :P
rt @name here rt is lowercase

输出:

[RT] @username I'm having one jolly good time!!
[RT] @username RT @username this is fun
I am not using RT as a label - I use my own "retweet" label :P (no changes)
[RT] @name here rt is lowercase

这是正则表达式还是常规php的工作?任何提示将不胜感激!

3 个答案:

答案 0 :(得分:2)

我用正则表达式做到这一点:

$result = preg_replace("/^RT/uim", "[RT]", $searchText);

如果输入字符串不是多行,则可以删除m

答案 1 :(得分:1)

这绝对是正则表达式能够做的工作。

/^RT\s*@[a-zA-Z0-9_]{1,15}/i

此模式与“RT”标记匹配,无论如何灵敏度,还会查找以下@twitter_username。这是我用来匹配推特用户名的参考:http://kagan.mactane.org/blog/2009/09/22/what-characters-are-allowed-in-twitter-usernames/

答案 2 :(得分:0)

不需要PHP。直接在mySQL中一步完成。

UPDATE
  tweet_table
SET
  tweet_text = '[RT] ' +  SUBSTRING(tweet_text, 4)
WHERE
  SUBSTRING(tweet_text, 1, 3) = 'RT '