At 19:18 03.06.2003, Jackson Miller said:
--------------------[snip]--------------------
>Maybe I should clarify.
>
>$message = '<p>Visit <a href="http://jaxn.org"; target="_top">My personal
>site</a> to learn more about me.</p>
><p>Visit <a href="http://memigo.com";>memigi</a> to learn about current
>events.';
>
>What I want is to run a preg_replace to get the following:
>Visit My personal site (http://jaxn.org) to learn more about me.
>
>Visit memigo (http://memigo.com) to learn about current events.
>
>stripping the HTML is easy, but before I do I want to convert the links.

The loop I posted does exactly that (using square brackets as to your
initial requirements). The 3rd parameter of preg_match ($aresult) will be
an array that holds the grouped expressions from the regex:
    [0] - whole string
    [1] - pre-match (all before <a href)
    [2] - the URL part of the link
    [3] - the linked text
    [4] - postmatch (all after the closing </a>).
Within the loop I use this array to modify the HTML code to read
    (pre-match)#linked-text# [#url#]...

which is what you want, after all.

>            
>On Tue, 2003-06-03 at 11:59, Ernest E Vogelsinger wrote:
>> At 18:43 03.06.2003, Jackson Miller said:
>> --------------------[snip]--------------------
>> >I am trying to create a text only version of an HTML formatted message.
>> >I would like to convert all links from:
>> ><a href="http://domain.tld.page.ext";>link name</a>
>> >to:
>> >link name [http://domain.tld/page.ext]
>> >
>> >The problem is that some links may have additional modifiers and onthers
>> >may not.  
>> >
>> >I have seen many examples of doing the reverse, but I can't seem to find
>> >an example of this.
>> >
>> >If anyone has done something similar and would like to share, please do.
>> --------------------[snip]-------------------- 
>> 
>> Sorry - you want the enclosed "link name"
>> This should work:
>> 
>> $result = null;
>> while
>> (preg_match('!(.*)<.*?a.*?href\s*=\s*"(.*?)".*?>(.*?)<\s*/\s*a\s*>(.*)!i',
>> $html, $aresult)) {
>>     $result .= $aresult[1];
>>     if ($aresult[2] && $aresult[3]) $result .= $aresult[3] . ' [' .
>> $aresult[2] . ']';
>>     $html = $aresult[4];
>> }
>> $result .= $html;
>> 
>> 
>> -- 
>>    >O     Ernest E. Vogelsinger
>>    (\)    ICQ #13394035
>>     ^     http://www.vogelsinger.at/
>> 
>> 
--------------------[snip]-------------------- 

-- 
   >O     Ernest E. Vogelsinger
   (\)    ICQ #13394035
    ^     http://www.vogelsinger.at/



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

Reply via email to