Re: Removing link on the fly, but leave link text
| From: | Ashley Sheridan | Date: | Tue, 31 Aug 2010 20:06:22 +0000 |
| Subject: | Re: Removing link on the fly, but leave link text | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-307786@lists.php.net to get a copy of this message | ||
On Tue, 2010-08-31 at 15:01 -0500, Karl DeSaulniers wrote:
> On Aug 31, 2010, at 2:32 PM, Ashley Sheridan wrote:
>
> > On Tue, 2010-08-31 at 14:31 -0500, Karl DeSaulniers wrote:
> >>
> >> Hi,
> >> Say I have some text.
> >>
> >> $text = 'You can logon here: <a
> >> href="http://website.com/shop/
> >>
> >> index.php?username='.$username.'">http://website.com/shop/index.php?
> >> username='.$username.'</a>. This link will take you to your web
> >> browser to login.'.$eol;
> >>
> >> I want to be able to strip the "<a
> >> href="http://website.com/shop/
> >> index.php?username='.$username.'">" and </a>.
> >> Leaving just the
> >> http://website.com/shop/index.php?username='.
> >> $username.' text, so it would end up like.
> >>
> >>
> >> $text = 'You can logon here: [ÒJ/(jꈌŒd
> >> �øšhttp://website.com/shop/index.php?
> >> username='.$username.'. This link will take you to your web browser
> >> to login.'.$eol;
> >>
> >> I have tried MANY different ways and have no success.
> >> Can anyone help me?
> >> TIA
> >>
> >>
> >> Karl DeSaulniers
> >> Design Drumm
> >> http://designdrumm.com
> >>
> >
> > strip_tags() will do the job here.
> >
> > Thanks,
> > Ash
> > http://www.ashleysheridan.co.uk
> >
>
>
> Hi Ash,
> I tried that, but it did not work.
> I do not want it to strip all tags, just the <a href=""></a>. so if
> there was a <p> or <br />. I don't want those removed.
> There is more text than just what I posted.
>
> This is what I am trying currently.
> This is someones code from a forum that I am trying to adopt.
>
> //CODE start
> function strip_only($str, $tags) { // Thanks Steve
> if(!is_array($tags)) {
> $tags = (strpos($str, '>') !== false ? explode('>',
> str_replace('<', '', $tags)) : array($tags));
> if(end($tags) == '') array_pop($tags);
> }
> foreach($tags as $tag) $str = preg_replace('#</?'.$tag.'[^>]
> *>#is', '', $str);
> return $str;
> }
>
> $str = '<p
> style="text-align:center">Paragraph</p><strong>Bold</
> strong><br/><span
> strong>style="color:red">Red</span><h1>Header</h1>';
>
> echo strip_only($str, array('p', 'h1'));
> echo strip_only($str, '<p><h1>');
>
> //CODE end
>
> I was using it like so.
>
> $text = strip_only($text, array('a'));
> or
> $text = strip_only($text, '<a>');
>
> But got my results back like:
> 'You can logon here: href="http://website.com/shop/
>
> index.php?username='.$username.'">http://website.com/shop/index.php?
> username='.$username.'. This link will take you to your web
> browser to login.'.$eol;
> uugh..
>
> Karl DeSaulniers
> Design Drumm
> http://designdrumm.com
>
Look at the second argument to strip_tags() which allows you to specify
a list of allowable tags. It will do what you want, you just need to
look at the manual.
Thanks,
Ash
http://www.ashleysheridan.co.uk