我一直在阅读一本名为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函数中有什么用途。这是否与我不熟悉的正则表达式有关,因为它是用于匹配字符串部分的自定义模式。
这本书的解释如下:
的$分界和_normalize()成员全部为正则表达式的字符串的正常化,使剩余的方法可以对它们进行操作,而不必首先检查或正常化他们。 match()和split()方法的执行类似于preg_match_all()和preg_split()函数,但是对正则表达式要求更少的形式化结构,并返回更可预测的结果集合。 match()方法将返回第一个捕获的子字符串,整个子字符串匹配或null。在设置了一些标志并规范化正则表达式之后,split()方法将返回调用preg_split()函数的结果 。
感谢您的帮助提前。