Сегодня я публикую сайт на новом домене и новом хостинг-провайдере, но получаю обесцененные предупреждения в некоторых строках кода. Я плохо разбираюсь в материалах preg, но, может быть, кто-нибудь поможет мне преобразовать его в эквивалентный код preg_match?
Вот несколько строк кода:
/* 1 */ $b = ( eregi( "^https?://(.*).$sDomainName/", $q ) || eregi( "^https?://$sDomainName/", $q )); /* 2 */ function suIsValidEmail( $s ) { return eregi("^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$", $s); } /* 3 */ if( !eregi( '^https?://*/', $aa['src'] )) /* 4 */ $sText = ereg_replace('[^A-Za-z0-9 &;'.suMakeString( $asInclNonNumChars ).']', ' ', strip_tags( $s )); /* 5 */ function suPlainTextLinksToHtml( &$s ) { // convert all links to html links $s = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\">\\0</a>", $s ); } /* 6 */ function suPlainTextEmailToHtml( &$s ) { // Convert all email to links: $s = ereg_replace('[-a-z0-9!#$%&.\'*+/=?^_`{|}~]+@([.]?[a-zA-Z0-9_/-])*', '<a href="mailto:\\0">\\0</a>', $s ); } /* 7 */ if( $s === $sReferer || eregi( "^https?://$s/", $sReferer ) ) { return true; } /* 8 */ function suWildCardToRegExpression( $str ) { $s = ''; for ($i = 0; $i < strlen($str); $i++) { $c = $str{$i}; if ($c =='?') $s .= '.'; // any character else if ($c == '*') $s .= '.*'; // 0 || more any characters else if ($c == '[' || $c == ']') $s .= $c; // one of characters within [] else $s .= '\\' . $c; } $s = '^' . $s . '$'; //trim redundant ^ || $ //eg ^.*\.txt$ matches exactly the same as \.txt$ if (substr($s,0,3) == '^.*') $s = substr($s,3); if (substr($s,-3,3) == '.*$') $s = substr($s,0,-3); return $s; } function suIsFileNameMatch( $asFileMask, $sFileName ) { if( !is_array( $asFileMask )) { if( is_string( $asFileMask )) { $asFileMask = explode( ';', $asFileMask ); } else { $asFileMask = (array)$asFileMask; } } if( suIsValidArray( $asFileMask )) { foreach( $asFileMask as $sFileMask ) { $bResult = ereg( suWildCardToRegExpression( (string)$sFileMask ), $sFileName ); if( $bResult ) { return true; } } } return false; }
ПРИМЕЧАНИЕ. Я не ленивый человек, но я просто не знаю, как это сделать!
Маленький гид:
В preg
вам нужно окружить выражение символом разделителя; стандартным является /
, но это могут быть и другие (особенно если вы сопоставляете URL-адреса), например @
или ~
. Например, preg_match('#^https?://#i')
совпадает с eregi('^https?://')
.
eregi
можно преобразовать, добавив pattern modifier
i
pattern modifier
, как eregi
выше.
ereg_replace
переводит на preg_replace
а также eregi_replace
(но не забудьте добавить модификатор i
).
экранирование переменной внутри выражения может быть выполнено с помощью preg_quote
.
Не уверен, что это касается всех, но я приветствую других, кто звонит.
См. Также: http://docstore.mik.ua/orelly/webprog/pcook/ch13_02.htm