/ / Перетворення застарілого eregi / ereg / ereg_replace для preg_match або іншого еквівалента - php, preg-match, eregi, ereg

Перетворення застарілого eregi / ereg / ereg_replace до preg_match або іншого еквівалента - php, preg-match, eregi, ereg

Сьогодні я публікую сайт на новому домені та новомухостинг-провайдер, але отримуйте знецінені попередження на деяких рядках коду. Я не дуже добре в матеріалах 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;
}

ПРИМІТКА. Я не лінива людина, але я просто не знаю, як це зробити!

Відповіді:

2 для відповіді № 1

Малий гіда:

  • В preg, ви повинні оточити вираз символом розмежування; стандартна є /, але це також може бути й іншими (особливо, якщо ви підбираєте URL-адреси), наприклад @ або ~. Наприклад preg_match("#^https?://#i") такий же, як і eregi("^https?://").

  • eregi може бути перетворено шляхом додавання a pattern modifier i, як наведений вище приклад.

  • ereg_replace перекладається на preg_replace і так робить eregi_replace (але не забудьте додати i модифікатор)

  • Зняття змінної всередині виразу може бути зроблено за допомогою preg_quote.

Не впевнений, що це охоплює все, але я радий іншим дзвонити.

Дивись також: http://docstore.mik.ua/orelly/webprog/pcook/ch13_02.htm