55 return preg_match( $regex, $text );
67 private static function makeRegex( $filterEntry, $protocol ) {
68 $regex =
'!' . preg_quote( $protocol,
'!' );
69 if ( substr( $filterEntry, 0, 2 ) ==
'*.' ) {
70 $regex .=
'(?:[A-Za-z0-9.-]+\.|)';
71 $filterEntry = substr( $filterEntry, 2 );
73 $regex .= preg_quote( $filterEntry,
'!' ) .
'!Si';
98 public static function makeLikeArray( $filterEntry, $protocol =
'http://' ) {
101 $target = $protocol . $filterEntry;
104 if ( $bits ==
false ) {
109 if ( substr( $bits[
'host'], 0, 2 ) ==
'*.' ) {
111 $bits[
'host'] = substr( $bits[
'host'], 2 );
112 if ( $bits[
'host'] ==
'' ) {
123 if ( $bits[
'scheme'] ===
'mailto' && strpos( $bits[
'host'],
'@' ) ) {
125 $mailparts = explode(
'@', $bits[
'host'] );
126 $domainpart = strtolower( implode(
'.', array_reverse( explode(
'.', $mailparts[1] ) ) ) );
127 $bits[
'host'] = $domainpart .
'@' . $mailparts[0];
128 } elseif ( $bits[
'scheme'] ===
'mailto' ) {
130 $bits[
'host'] = strtolower( implode(
'.', array_reverse( explode(
'.', $bits[
'host'] ) ) ) );
132 $bits[
'host'] = strtolower( implode(
'.', array_reverse( explode(
'.', $bits[
'host'] ) ) ) );
133 if ( substr( $bits[
'host'], -1, 1 ) !==
'.' ) {
134 $bits[
'host'] .=
'.';
138 $like[] = $bits[
'scheme'] . $bits[
'delimiter'] . $bits[
'host'];
141 $like[] = $db->anyString();
144 if ( isset( $bits[
'port'] ) ) {
145 $like[] =
':' . $bits[
'port'];
147 if ( isset( $bits[
'path'] ) ) {
148 $like[] = $bits[
'path'];
149 } elseif ( !$subdomains ) {
152 if ( isset( $bits[
'query'] ) ) {
153 $like[] =
'?' . $bits[
'query'];
155 if ( isset( $bits[
'fragment'] ) ) {
156 $like[] =
'#' . $bits[
'fragment'];
160 foreach ( $like
as $likepart ) {
161 if ( !( $likepart instanceof
LikeMatch ) && strpos( $likepart,
'*' ) !==
false ) {
168 $like[] = $db->anyString();
182 if ( !is_array( $arr ) ) {
186 foreach ( $arr
as $key =>
$value ) {
188 return array_slice( $arr, 0, $key + 1 );