53 return preg_match( $regex, $text );
65 if ( substr( $filterEntry, 0, 2 ) ==
'*.' ) {
66 $regex .=
'(?:[A-Za-z0-9.-]+\.|)';
67 $filterEntry = substr( $filterEntry, 2 );
69 $regex .= preg_quote( $filterEntry,
'!' ) .
'!Si';
94 public static function makeLikeArray( $filterEntry, $protocol =
'http://' ) {
97 $target = $protocol . $filterEntry;
100 if ( $bits ==
false ) {
105 if ( substr( $bits[
'host'], 0, 2 ) ==
'*.' ) {
107 $bits[
'host'] = substr( $bits[
'host'], 2 );
108 if ( $bits[
'host'] ==
'' ) {
119 if ( $bits[
'scheme'] ===
'mailto' && strpos( $bits[
'host'],
'@' ) ) {
121 $mailparts = explode(
'@', $bits[
'host'] );
122 $domainpart = strtolower( implode(
'.', array_reverse( explode(
'.', $mailparts[1] ) ) ) );
123 $bits[
'host'] = $domainpart .
'@' . $mailparts[0];
124 } elseif ( $bits[
'scheme'] ===
'mailto' ) {
126 $bits[
'host'] = strtolower( implode(
'.', array_reverse( explode(
'.', $bits[
'host'] ) ) ) );
128 $bits[
'host'] = strtolower( implode(
'.', array_reverse( explode(
'.', $bits[
'host'] ) ) ) );
129 if ( substr( $bits[
'host'], -1, 1 ) !==
'.' ) {
130 $bits[
'host'] .=
'.';
134 $like[] = $bits[
'scheme'] . $bits[
'delimiter'] . $bits[
'host'];
137 $like[] = $db->anyString();
140 if ( isset( $bits[
'port'] ) ) {
141 $like[] =
':' . $bits[
'port'];
143 if ( isset( $bits[
'path'] ) ) {
144 $like[] = $bits[
'path'];
145 } elseif ( !$subdomains ) {
148 if ( isset( $bits[
'query'] ) ) {
149 $like[] =
'?' . $bits[
'query'];
151 if ( isset( $bits[
'fragment'] ) ) {
152 $like[] =
'#' . $bits[
'fragment'];
156 foreach ( $like
as $likepart ) {
157 if ( !( $likepart instanceof
LikeMatch ) && strpos( $likepart,
'*' ) !==
false ) {
162 if ( !( $like[count( $like ) - 1] instanceof
LikeMatch ) ) {
164 $like[] = $db->anyString();
178 if ( !is_array( $arr ) ) {
182 foreach ( $arr
as $key =>
$value ) {
184 return array_slice( $arr, 0, $key + 1 );