Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何剥离转发的开始?_Php_Regex - Fatal编程技术网

Php 如何剥离转发的开始?

Php 如何剥离转发的开始?,php,regex,Php,Regex,每当转发推文时,转发推文通常具有相同的格式: RT @UserName: Original Tweet, sometimes with alterations 我正在寻找一种方法来分离“RT@UserName:”,这样就只剩下原来的tweet了。我认为正则表达式应该检查tweet开头的“RT”,然后检查@UserName后面的第一个空格。我现在有 preg_replace("/^RT/ui", "", $tweet); 但这只会删除RT。如何扩展此正则表达式 第二个问题:或者,也可以在twe

每当转发推文时,转发推文通常具有相同的格式:

RT @UserName: Original Tweet, sometimes with alterations
我正在寻找一种方法来分离“RT@UserName:”,这样就只剩下原来的tweet了。我认为正则表达式应该检查tweet开头的“RT”,然后检查@UserName后面的第一个空格。我现在有

preg_replace("/^RT/ui", "", $tweet);
但这只会删除RT。如何扩展此正则表达式

第二个问题:或者,也可以在tweet开头检查“RT”,然后只保存第二个空格后的字符串部分(第一个空格在RT和@UserName之间,因此@UserName后的第一个空格表示截止点),但是,如果出于某种原因,例如RT和@UserName之间有两个空格,我就会遇到问题

preg_replace("/^RT [^:]+:/ui", "", $tweet);
这将删除所有内容,直到结肠

编辑:

显然有些转发没有冒号:

preg_replace("/^RT +@[^ :]+:? */ui", "", $tweet);

这将删除“RT”、用户名、可选冒号以及消息前的空格。

您可能还希望在第一个冒号后包含空格。
preg\u replace(“/^RT[^:::+:+/ui”,”,$tweet)
将删除第一个冒号后的所有初始空格。是的,但有时没有冒号:“RT@UserName这是一条tweet”,因此这不起作用。这就是为什么我认为最好在用户名后寻找第一个空格:)如果我是正确的,这应该适用于您提到的所有情况。@BrunoSilva:+1,但是编辑您的答案,而不是添加注释。