在php中,如何扫描多个字符串的文本(以用户提交的消息的形式)(以其他用户名的形式)?
例如,在用户提交消息的下方,我想要一种方法“找到”字符串'user-one'和'user-two'并将这些字符串发送到数组中。
你好这是一条测试信息,你能看到@ user-one,@ user-two?
答案 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;
}