Regular expression code optimieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Regular expression code optimieren

    Hi,
    Ich versuche in einem string ip's zu identifizieren und diese zu links zu verwandeln. Die ip's müssen zwischen ubb tags sein.

    z.B,
    [ip] This is the ip of my pc: 192.168.1.1
    of my friend: 192.168.1.2
    192.168.1.3
    192.168.1.4 etc..
    [/ip]
    Der rest soll (also text) soll nicht verändert werden. Ich hab diesen code geschrieben, jedoch funktioniert er nicht wenn der string zu lang ist. Die seite wird nicht mal geladen.
    Im moment muss jede ip in einer neuen Zeile sein, dass ist auch nicht optimal.

    Hier mein code:

    PHP-Code:
    eregi("\\[ip\\].*\\[\\/ip\\]",$post['pagetext'], $ip);
    $ip eregi_replace("\\[ip\\]","",$ip[0]);
    $ip eregi_replace("\\[\/ip\\]","",$ip);
    $ips explode ("\n"$ip);
    $array_count count($ips);

    for(
    $y=0$y<$array_count$y++) {
       if(isset(
    $ips[$y]) ) {
       
    $ips[$y] = eregi_replace("^\r","&nbsp;",$ips[$y]);
       
    $ips[$y] = eregi_replace("\r","",$ips[$y]);
       
           if(!
    ereg("[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}",$ips[$y], $ip)) $iplisting .= "$ips[$y]<br />";
           elseif (
    is_ip($ip[0])) {
              if(!
    $takenips)$iplisting .= eregi_replace($ip[0],"<a href=\"here is my link\">$ip[0]</a>"$ips[$y]."<br>");
           }
        }
     

    Und ich benutze diese funktion (wenn jemand eine bessere hat wäre es echt nett wenn ihr diese hier posten könntet):

    PHP-Code:
    function is_ip($ip) { 
    $valid TRUE

    if(
    preg_match("/^((127)|(192)|(10).*)$/""$ip")) { 
        return 
    FALSE
        } 

    $ip explode("."$ip); 
        if(
    count($ip)!=4) { 
            return 
    FALSE
            } 
        foreach(
    $ip as $block) { 
            if(!
    is_numeric($block) || $block>255 || $block<0) { 
                
    $valid FALSE
            } 
        } 
    return 
    $valid

    Kann mir jemand einen Ansatzpunkt geben wie ich am besten den code optimiere, sodass er auch grössere strings handhaben kann?
    thx!
Lädt...
X