Re: Regular Expression Help in my PHP! Sorry if wrong group
| From: | 1LT John W. Holmes | Date: | Wed, 15 Jan 2003 19:15:14 +0000 |
| Subject: | Re: Regular Expression Help in my PHP! Sorry if wrong group | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-131736@lists.php.net to get a copy of this message | ||
> I have a script that turns certain words into links. That I am having
> no problems with, it is when I want to turn the links back in to plain
> text that I am having the problem. Below are my examples. And I know
> my regex is being greedy but I don't know how to stop it from being so
> damn greedy I thought the ? mark would help but it didn't. Any help
> would be appreciated. So here it goes:
>
>
> The code:
>
> $strStr = "This is <a href=test>USF</a> at <a href=test>Tampa</a>.
> This
> is <a href=test>USF</a> at <a href=test>Tampa</a>.";
> echo $strStr."<br>\n";
> $strStr = preg_replace("/<a.*?>(Tampa)<\/a>/","\\1",$strStr);
> echo $strStr."<br>\n";
> $strStr = preg_replace("/<a.*?>(USF)<\/a>/","\\1",$strStr);
> echo $strStr."<br>\n";
>
> The output:
>
> This is <a href=test>USF</a> at <a href=test>Tampa</a>. This is <a
> href=test>USF</a> at <a href=test>Tampa</a>.
> This is Tampa. This is Tampa.
> This is Tampa. This is Tampa.
>
> The expected output:
>
> This is <a href=test>USF</a> at <a href=test>Tampa</a>. This is <a
> href=test>USF</a> at <a href=test>Tampa</a>.
> This is <a href=test>USF</a> at Tampa. This is <a href=test>USF</a> at
> Tampa.
> This is USF at Tampa. This is USF at Tampa.
Well, a /U at the end of your pattern will make it so the regex isn't
greedy. That may solve your problem.
Or you could try matching "/<a[^>]+>(Tampa)<\/a>/"
which will match an <a followed by anything that's not a >, followed by a >.
So it essentially makes it ungreedy.
---John Holmes...