正则表达式 - 回应字符串的第一个字符

时间:2014-09-09 18:29:04

标签: php regex

我试着回复" SiteName"的第一个字母,我遇到了一些困难,下面的表达式返回" 1"而不是" S"。

// $sitename = $GLOBALS["AL_CFG"]["siteName"];

$sitename = "SiteName.com";
$sitename1 = preg_match("/.{0,1}/", $sitename);
echo $sitename1;

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

那是因为preg_match()返回一个值,表示匹配是否成功,实际匹配本身。要访问匹配项,您需要指定第三个参数,即一个数组,您希望在其中存储匹配项:

$sitename1 = preg_match("/.{0,1}/", $sitename, $matches);
print_r($matches);
echo $matches[0]; // => 'S'

无论如何,如果您只想尝试获取给定字符串的第一个字符,您根本不需要使用正则表达式;你可以简单地将字符串作为字符数组访问:

来自PHP docs

  

可以通过使用方形数组括号在字符串后面指定所需字符的从零开始的偏移来访问和修改字符串中的字符,如$str[42]中所示。将字符串视为用于此目的的字符数组。当您想要提取或替换多个字符时,可以使用函数substr()substr_replace()

所以要从$sitename获取第一个字符,你会写:

echo $sitename[0]; // => 'S'

答案 1 :(得分:1)

如果您只是想捕获字符串中的第一个字符,那么您不需要使用正则表达式。

$sitename = "SiteName.com";
$letter = substr($sitename, 0, 1);
echo $letter; // prints "S"