Я занимаюсь веб-очисткой с ColdFusion, и в основном все работает нормально.Единственные другие проблемы, с которыми я сталкиваюсь, - это то, что некоторые URL-адреса сопровождаются текстом, который теперь вызывает ошибки.
Не уверен, что это вызвало, но это, вероятно, мое регулярное выражение.В любом случае, есть четкий шаблон, где текст появляется перед "http://".. Я хотел бы просто удалить все перед ним.
Есть ли какой-нибудь шанс, что вы могли бы помочь?
Возьмите эту строкунапример:
"I'M OBSESSED WITH MY BEAUTIFUL FRIEND" src="http://scs.viceland.com/feed/images/uk_970014338_300.jpg
Я был бы очень признателен за вашу помощь, поскольку я не смог найти время для регулярных выражений - надеюсь, я когда-нибудь это сделаю!
Спасибо.
РЕДАКТИРОВАТЬ:
Привет,
Я подумал, что может быть полезно опубликовать всю мою функцию, так как это может быть мой первоначальный REGEX, который вызывает проблему.у функции есть один аргумент. В данном случае это содержимое HTML-файла (через CFHTTP).
В некоторых случаях каждый URL выглядит и работает нормально. Если я попробую, например, digg.com, это сработает.... но он умирает на чем-то вроде youtube.com. Я думаю, это будет связано с их определенным форматированием HTML. В любом случае, все, что мне когда-либо нужно, это значение атрибута SRC для тегов изображения.
Вот что у меня есть:
<cffunction name="extractImages" returntype="array" output="false" access="public" displayname="extractImages">
<cfargument name="fileContent" type="string" />
<cfset var local = {} />
<cfset local.images = [] />
<cfset local.imagePaths = [] />
<cfset local.temp = [] />
<cfset local.images = reMatchNoCase("<img([^>]*[^/]?)>", arguments.fileContent) />
<cfloop array="#local.images#" index="local.i">
<cfset local.temp = reMatchNoCase("(""|')(.*)(gif|jpg|jpeg|png)", local.i) />
<cfset local.path = local.temp />
<cfif not arrayIsEmpty(local.path)>
<cfset local.path = trim(replace(local.temp[1],"""","","all")) />
<cfset arrayAppend(local.imagePaths, local.path) />
</cfif>
<cfif isValid("url", local.path)>
<cftry>
<cfif fileExists(local.path)>
<cfset arrayAppend(local.imagePaths, local.path) />
</cfif>
<cfcatch type="any">
<cfset application.messagesObject.addMessage("error","We were not able to obtain all available images on this page.") />
</cfcatch>
</cftry>
</cfif>
</cfloop>
<cfset local.imagePaths = application.udfObject.removeArrayDuplicates(local.imagePaths) />
<cfreturn local.imagePaths />
</cffunction>
Эта функцияна РАБОТАХ.Однако на некоторых сайтах это не так.Это выглядит немного неестественно, но во многом это всего лишь определенные меры предосторожности, чтобы убедиться, что я получаю действительные пути к изображениям.
Надеюсь, вы поможете.
Еще раз большое спасибо.Michael