可能重复:
PHP Regex to convert text before colon to link
Return the portion of a string before the first occurrence of a character in php
我需要从twitter rss Feed获取用户名。
我将Feed中的数据作为标题返回,我想提取用户名。
UsernameIwanttoget:This is the twitter message....
所以基本上,在“:”之前获取所有文字。
答案 0 :(得分:4)
$pos = strpos($text, ':');
if ($pos !== false) {
$username = substr($text, 0, $pos);
$message = substr($text, $pos +1);
}
这里真的不需要正则表达式,正则表达式很慢而且如果你不熟悉也不容易找不到,所以你最好尽可能使用字符串函数。
你应该使用cdhowie answer而不是
答案 1 :(得分:3)
我会使用explode()
:
$pieces = explode(':', $text, 2);
if (count($pieces) != 2) {
# Malformed message
}
$username = $pieces[0];
$message = $pieces[1];
如果你也想要这个消息,那么一次提取这两个部分(IMO)比使用正则表达式或substr
更具可读性。
如果有可选的空格填充,您可以考虑通过trim()
运行结果字符串。
答案 2 :(得分:2)
explode()会更好,然后你可以使用用户名和推文。
$ tweet = explode(“:”,$ text);
$ text [0]会给你用户名,$ text [1]会给你推文。
答案 3 :(得分:0)
对于这样一个简单的任务,您不需要正则表达式。到目前为止,只需搜索冒号并提取字符:
$str = 'UsernameIwanttoget:This is the twitter message...';
$pos = strpos($str, ':');
if (!$pos)
{
// Something went wrong: $str doesn't have the expected format!
}
else
{
$username = substr($str, 0, $pos);
}
答案 4 :(得分:0)
您也可以使用explode()
示例:
$stuffIWant = "UsernameIwanttoget:This is the twitter message....";
$pieces = explode(":", $stuffIWant);
echo $pieces[0]; // piece1
答案 5 :(得分:0)
怎么样:
preg_match("/([a-zA-Z0-9\\-]*)(\\s)*:/", $string, $result);
这将为您提供所有字母数字字符(和破折号),但不会匹配文本与“:”之间的任何空格
所以$ result [1]会有匹配的字符串
答案 6 :(得分:0)
yokoloko和flinch说的是真的,但是为了答案:
$str = 'UsernameIwanttoget:This is the twitter message...';
preg_match('/([A-Z0-9]+)[^\s]:/i', $str, $matches);
//if something could be matched, $matches[1] contains the matched part
$username = $matches[1];
//etc...