Re: preg_replace question

From: Date: Tue, 25 Jan 2011 11:31:51 +0000
Subject: Re: preg_replace question
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-311011@lists.php.net to get a copy of this message
Am 24.01.2011 18:08, schrieb Alex Nikitin:
If you declare your arrays, and set k to 0 first, put quotes around array values and use the correct limit (you can default to -1), you will get results, here is code and example (hopefully this helps you) <?php
        function internal_links($str, $links, $limit=-1) {
                $pattern=array();
                $replace=array();
                $k=0;
                foreach($links AS $link){
                        $pattern[$k] = "~\b({$link['phrase']})\b~i";
                        $replace[$k] = '<a href="'.$link['link'].'">\\1</a>';
                        $k++;
                }
                return preg_replace($pattern,$replace,$str, $limit);
        }
echo internal_links("süße knuffige Beagle Welpen ab sofort", array(array('phrase'=>"beagle", 'link'=>"http://google.com"),array('phrase'=>"welpen", 'link'=>"http://wolframalpha.com")), -1); Output: süße knuffige<a href="http://google.com">Beagle</a> <a href=" http://wolframalpha.com">Welpen</a> ab ~Alex
Hello, thank you all for your help. It seems that I am building the array wrong. Your code works with that array: $internal_links = array(array('phrase'=>"beagle", 'link'=>"http://google.com"),array('phrase'=>"welpen", 'link'=>"http://wolframalpha.com")); I am pulling the data out of a DB and am using this code: while ($row = mysql_fetch_object($result)){ $internal_links[$row->ID]['phrase'] = $row->phrase; $internal_links[$row->ID]['link'] = $row->link; } You build the array different, could you help me to adapt this on my code? I tried $internal_links['phrase'][] as well, but that did not help either. Thank you for any help, Merlin

« previous php.general (#311011) next »