Re: [PHP] quick question about preg_replace

2006-10-05 Thread Ivo F.A.C. Fokkema
On Thu, 05 Oct 2006 09:29:46 +0800, Penthexquadium wrote:

 On Wed, 4 Oct 2006 23:19:58 +0200, Martin Bach Nielsen [EMAIL PROTECTED] 
 wrote:
 
 Hi all.
 
  
 
 I have written a guestbook (I know, there's a ton out there), which until
 recently did not get any spam, so now I'm trying to remove the spam-ad by
 using preg_replace:
 
  
 
 $melding = preg_replace('/(a href=\http:\/\/[^^]+)/i', This message is
 temporarily cut-off due to spam-suspicion., $melding);
 
  
 
 However, this only makes the problem half-solved, since I also want any text
 before the link to be replaced with a message as stated above. The above
 line removes anything after 'a href=//'.
 
 Is there any way to make the above line to include anything before the a
 href=// ?
 
  
 
 I have tried different options, and yes, I have read the php manual on
 preg_replace, but I might not have properly identified how to get the text
 in front modified.
 
  
 
 Thankful for any hints, tips, links, anything that helps :-)
 
  
 
 Regards,
 
 Martin Bach Nielsen 
 
 
 If you only want to replace the line including url(s) by a message, a
 simple regular expression is enough.
 
 ?php
 $melding = This is a spam.\n
  . This is a a href=\http://www.example.com/\;example/a line.\n
  . Another line.\n
  . a href=\http://www.e.com/ads/show?n=123\;123/a (456)\n
  . End Line.\n;
 
 $melding = preg_replace(/.*?a href=\http:\/\/.+/i, This line is 
 temporarily cut-off due to spam-suspicion., $melding);
 
 echo $melding;
 ?
 
 The script above will output:
 
 This is a spam.
 This line is temporarily cut-off due to spam-suspicion.
 Another line.
 This line is temporarily cut-off due to spam-suspicion.
 End Line.

If you use this code, be sure to use lt; in stead of  and gt; in stead
of  or else the spam messages won't be shown.

Otherwise, if you want the entire message changed, it's quicker to do:

if (preg_match('/(a href=\http:\/\/[^^]+)/i', $melding)) {
$melding = 'This message is temporarily cut-off due to spam-suspicion.';
}

Just an idea...

Ivo

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



[PHP] quick question about preg_replace

2006-10-04 Thread Martin Bach Nielsen
Hi all.

 

I have written a guestbook (I know, there's a ton out there), which until
recently did not get any spam, so now I'm trying to remove the spam-ad by
using preg_replace:

 

$melding = preg_replace('/(a href=\http:\/\/[^^]+)/i', This message is
temporarily cut-off due to spam-suspicion., $melding);

 

However, this only makes the problem half-solved, since I also want any text
before the link to be replaced with a message as stated above. The above
line removes anything after 'a href=//'.

Is there any way to make the above line to include anything before the a
href=// ?

 

I have tried different options, and yes, I have read the php manual on
preg_replace, but I might not have properly identified how to get the text
in front modified.

 

Thankful for any hints, tips, links, anything that helps :-)

 

Regards,

Martin Bach Nielsen 



Re: [PHP] quick question about preg_replace

2006-10-04 Thread Penthexquadium
On Wed, 4 Oct 2006 23:19:58 +0200, Martin Bach Nielsen [EMAIL PROTECTED] 
wrote:

 Hi all.
 
  
 
 I have written a guestbook (I know, there's a ton out there), which until
 recently did not get any spam, so now I'm trying to remove the spam-ad by
 using preg_replace:
 
  
 
 $melding = preg_replace('/(a href=\http:\/\/[^^]+)/i', This message is
 temporarily cut-off due to spam-suspicion., $melding);
 
  
 
 However, this only makes the problem half-solved, since I also want any text
 before the link to be replaced with a message as stated above. The above
 line removes anything after 'a href=//'.
 
 Is there any way to make the above line to include anything before the a
 href=// ?
 
  
 
 I have tried different options, and yes, I have read the php manual on
 preg_replace, but I might not have properly identified how to get the text
 in front modified.
 
  
 
 Thankful for any hints, tips, links, anything that helps :-)
 
  
 
 Regards,
 
 Martin Bach Nielsen 
 

If you only want to replace the line including url(s) by a message, a
simple regular expression is enough.

?php
$melding = This is a spam.\n
 . This is a a href=\http://www.example.com/\;example/a line.\n
 . Another line.\n
 . a href=\http://www.e.com/ads/show?n=123\;123/a (456)\n
 . End Line.\n;

$melding = preg_replace(/.*?a href=\http:\/\/.+/i, This line is 
temporarily cut-off due to spam-suspicion., $melding);

echo $melding;
?

The script above will output:

This is a spam.
This line is temporarily cut-off due to spam-suspicion.
Another line.
This line is temporarily cut-off due to spam-suspicion.
End Line.

-- 
Sorry for my poor English.

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