我试图在PHP中验证我的输入,如何检查UTF8中以下有效格式的字符串中是否存在@ 用户名?
有效:
无效
以下代码有效,但声称" @ usernamehow"在搜索" @ username"
时有效Button
答案 0 :(得分:1)
我认为你基本上会问how to check if a word is present within a string with PHP。这可以通过使用REGEX作为rock321987建议,或使用strpos()
:
$word = " @username ";
$string = "Hello @username how are you?";
if (strpos($string, $word) !== false) {
die('Found it');
}
我发现Laravel正在使用完全相同的方法:
/**
* Determine if a given string contains a given substring.
*
* @param string $haystack
* @param string|array $needles
* @return bool
*/
function str_contains($haystack, $needles)
{
foreach ((array) $needles as $needle)
{
if ($needle != '' && strpos($haystack, $needle) !== false) return true;
}
return false;
}
希望这有帮助。
答案 1 :(得分:1)
为了匹配您提到的特定模式,您可以使用带有单边字边界的简单正则表达式:
$pattern = '/@username\b/';
$userMentioned = preg_match($pattern, $testString);
这将确保右侧没有其他字母或数字,但允许在左侧。