PHP preg_replace için Eregi_replace dönüştürmek

1 Cevap php

Ben (PHP5 o amortismana beri) preg_replace için eregi_replace dönüştürme yardıma ihtiyacım var:

  function makeClickableLinks($text)
  {
  $text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
                        '<a href="\\1">\\1</a>', $text);
  $text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
                        '\\1<a href="http://\\2">\\2</a>', $text);
  $text = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})',
                        '<a href="mailto:\\1">\\1</a>', $text);
  return $text;
  }

(Kullanıcı üzerlerine tıklayabilirsiniz böylece köprüler içine metin bağlantıları ve e-postalar döner)

1 Cevap

Kılavuzda POSIX ve PCRE'nin ifadeler arasında list of differences bir göz ile başlayın.

Ifadeleri karmaşık değilse, genellikle basitçe $pattern parametre etrafında ayraçları koyarak kurtulmak ve fonksiyonları preg ailesini kullanmak geçiş anlamına gelir. Senin durumunda, bu yapardın:

 function makeClickableLinks($text)
 {
 $text = preg_replace('/(((f|ht){1}tp:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i',
                       '<a href="\\1">\\1</a>', $text);
 $text = preg_replace('/([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i',
                       '\\1<a href="http://\\2">\\2</a>', $text);
 $text = preg_replace('/([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})/i',
                       '<a href="mailto:\\1">\\1</a>', $text);
 return $text;
 }

Lütfen desen etrafında / karakterleri ve ayraçları sonra i bayrağı unutmayın. Ben hızlı bir şekilde bu test ve temel bir URL için çalıştı. Muhtemelen daha iyice test etmek isteyeceksiniz.