[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-db
Subject:    Re: [PHP-DB] eregi sentence
From:       Ivan Fomichev <johnny () net ! frn ! ru>
Date:       2003-11-30 15:56:54
[Download RAW message or body]

Hello Nikos,

Sunday, November 30, 2003, 10:29:19 AM, you wrote:

NG> Can somebody tell me what is wrong with the following?
NG> $body=eregi_replace("<a href=\"(.+)\"([^>]*)>(.+)</a>", "<a href=\"\\1\"
NG> target=\"_blank\" class=\"down_txt\"><strong>\\3</strong></a>", $body);

1) /.+/ is too greedy. You should use something like /[^"]+/ or /.+?/ instead
   (second is supported only in Perl-compatible regexps). The best solution
   could be /[^'"]+?/ however.
2) /<a / doesn't match "\n" after "a".

   $body = preg_replace(
       '#<[Aa]\s[^>]*?[Hh][Rr][Ee][Ff]\s*=\s*([\'"])([^\'">]+?)\1[^>]*?>' .
           '([^<]*?)</a[^>]*?>#s',
       '<A href="\2" target="_blank" class="down_txt">' .
           '<strong>\3</strong></a>',
       $body
   );

   This regexp is not perfect, but I hope it has enough margin of safety, at
   least if your HTML code is more or less correct. E. g., all href values
   must be quoted and '<', '>', '"' and "'" without special meaning must be
   written as HTML entities.
   
-- 
Best regards,
 Ivan                            mailto:johnny@net.frn.ru

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic