如何在php中扫描多个字符串的文本

时间:2013-01-02 21:45:20

标签: php string

在php中,如何扫描多个字符串的文本(以用户提交的消息的形式)(以其他用户名的形式)?

例如,在用户提交消息的下方,我想要一种方法“找到”字符串'user-one'和'user-two'并将这些字符串发送到数组中。

  

你好这是一条测试信息,你能看到@ user-one,@ user-two?

4 个答案:

答案 0 :(得分:2)

你可以尝试

$message = "Hello this is a test message, can you see it @user-one, @user-two?" ;
preg_match_all("/\@[a-z\-]+/", $message,$match);
var_dump($match[0]);

输出

array (size=2)
  0 => string '@user-one' (length=9)
  1 => string '@user-two' (length=9)

答案 1 :(得分:0)

preg_match_all('|\@(.*) |' , $userText , $match);

print_r($match[1])

$match[1]将包含所有用户名。 $userText是用户输入文本。如果您希望用户名为$match[0],请使用@

答案 2 :(得分:0)

您可以使用strrpos检索位置和substr + strlen来获取文本。 例如:

...
$mystring = "Hello this is a test message, can you see it @user-one, @user-two?";
$pos = strrpos($mystring, "@user-one");
if ($pos > 0) {
    $str = substr($mystring, $pos, strlen("@user-one"));
}
...

很抱歉,如果我不正确理解这个问题。

答案 3 :(得分:0)

没有凌乱的模式与此匹配!

function stringToUserArray($str) { 
$remove = array(".",",","!","?");
$str = str_replace($remove, " ", $str);
$array = explode(" ", $str);
foreach($array as $string) { 
    if($string[0] == "@") { 
        $users[] = $string;
    }
}

return $users;
}