我一直在阅读一本关于框架的书,名为 PRO PHP MVC。在书中创建了一个 StringMethods 类。代码看起来像这样。
class StringMethods
{
private static $_delimiter = "#";
private function __construct()
{
// do nothing
}
private function __clone()
{
// do nothing
}
private static function _normalize($pattern)
{
return self::$_delimiter.trim($pattern, self::$_delimiter).self::$_delimiter;
}
public static function getDelimiter()
{
return self::$_delimiter;
}
public static function setDelimiter($delimiter)
{
self::$_delimiter = $delimiter;
}
public static function match($string, $pattern)
{
preg_match_all(self::_normalize($pattern), $string, $matches, PREG_PATTERN_ORDER);
if(!empty($matches[1]))
{
return $matches[1];
}
if(!empty($matches[0]))
{
return $matches[0];
}
return null;
}
public static function split($string, $pattern, $limit = null)
{
$flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_NO_EMPTY;
return preg_split(self::_normalize($pattern), $string, $limit, $flags);
}
}
我的问题是 $_delimiter 是做什么用的?它在 $_normalization 函数中的用途是什么。是否与我不太熟悉的正则表达式有关,除了它是用于匹配字符串部分的自定义模式这一事实。
书的解释如下:
$delimiter 和 _normalize() 成员都是用于正则表达式字符串的规范化,以便剩余的方法可以对它们进行操作,而无需先对其进行检查或规范化。match() 和 split() 方法的执行类似于 preg_match_all() 和 preg_split() 函数,但对正则表达式的正式结构要求较低,并返回一组更可预测的结果。match() 方法将返回第一个捕获的子字符串、整个子字符串匹配或 null。split() 方法将在设置一些标志和规范化正则表达式之后返回调用 preg_split() 函数的结果。
我在这里先向您的帮助表示感谢。