Google doesn't put quotes around most attributes. The following works
(takes single or double quotes or even no quotes into consideration).
Watch out for wrapping in the regular expressions. It allows you to find
the value of 1 attribute in one or more tags (see examples).

<cfscript>
function GetAttributeValue(str,tag,attr){
        var regexp =
"<(#tag#)\s[^>]*#attr#=('.*?'|"".*?""|[^\s>]+)[^>]*>";
        var aReturn = ArrayNew(1);
        var start = 1;
        var stTmp = StructNew();
        
        while(true){
                stTmp = REFindNoCase(regexp,str,start,true);
                if(stTmp.pos[1] IS 0) break;
        
ArrayAppend(aReturn,REReplace(Mid(str,stTmp.pos[3],stTmp.len[3]),"^['""]
(.*)['""]$","\1"));
                start = stTmp.pos[1] + stTmp.len[1];
        }
        
        return aReturn;
}
</cfscript>
<cfhttp url="http://www.google.com/"; throwonerror="yes"></cfhttp>
<cfoutput>#HTMLCodeFormat(cfhttp.filecontent)#</cfoutput>
<cfdump var="#GetAttributeValue(cfhttp.filecontent,'a','href')#">
<cfdump var="#GetAttributeValue(cfhttp.filecontent,'img','src')#">
<cfdump var="#GetAttributeValue(cfhttp.filecontent,'a|td','class')#">

Pascal

> -----Original Message-----
> From: Burns, John D [mailto:[EMAIL PROTECTED]
> Sent: 22 March 2005 22:59
> To: CF-Talk
> Subject: RE: regex help for grabbing values of html tag attributes
> 
> Ben,
> 
> I can see what you've got (I think) and it makes sense, but for some
> reason, it's not working.  I'm grabbing the html from www.google.com
and
> running it on it and this is what I've got in my code:
> 
> #refindnocase('<img.*?src="(.*?)".*?>',cfhttp.fileContent,0,true)#
> 
> I'm using <cfdump to display that info and what I see are 2 arrays
(len
> and pos) and both have values of 1 and 0.  I thought that if the first
> value was 1, the second value would be the position of the occurrence
of
> the search string.  I know google has an image, and I'm displaying the
> cfhttp.filecontent in a textarea above so that I can ensure the
results
> are coming back as expected.  Any ideas?  Am I doing something wrong?
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Logware (www.logware.us): a new and convenient web-based time tracking 
application. Start tracking and documenting hours spent on a project or with a 
client with Logware today. Try it for free with a 15 day trial account.
http://www.houseoffusion.com/banners/view.cfm?bannerid=67

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:199744
Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54

Reply via email to