2015-07-16 3 views
2

Я искал информацию и нашел ценную информацию. о FindNoCase, но я еще не нашел ответа на этот конкретный вопрос.Используйте FindNoCase, чтобы найти строку url

Я использую FindNoCase, чтобы найти «/ us /» в URL-адресе, а затем обработать некоторый код. Это отлично подходит для одного сайта страны.

<cfif FindNoCase("/us/",#cgi.SCRIPT_NAME#)> 
Process some code here. 
</cfif> 

Мой вопрос: Есть ли способ, чтобы найти кусок URL, «/ хх /», для нескольких сайтов страны и обрабатывать один и тот же код между тегами Cfif? Например, «/ us /», «/ ca /», «/ mx /» и т. Д.

Надеется, что это имеет смысл.

+2

Да, конечно, разделите эту часть URL-адреса на переменную, затем используйте его в случае коммутатора или в запросе db и т. Д. –

ответ

0

Если я правильно понимаю ваш вопрос, вы хотите обработать тот же код для нескольких стран, если он обнаружен в URL-адресе. Вы могли бы просто создать базу данных кодов стран, которые хотите обработать определенным способом (CountryTableXYZ), запросить ее, а затем пропустить этот запрос, чтобы он просматривал URL-адрес для каждой записи, имеющейся в таблице.

<cfloop query="CountryQuery"> 
<cfif FindNoCase("#countryCode#",#cgi.SCRIPT_NAME#)> 
Process some code here. 
</cfif> 
</cfloop> 

По крайней мере, так я его интерпретирую. Если я не прав, сообщите мне или уточните свой первоначальный пост.

3

Если вы ищете несколько разных кодов среди строк, я бы использовал REFindNoCase. Сделайте регулярное выражение так (/us/)|(/ca/), которое будет искать /us/ или /ca/, а в документации (http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7e99.html) вы можете вернуть подвыражения и ссылаться на них.

Не требуется петля.

REFindNoCase("(/us/)|(/ca/)", URL, 1, true)

Для ссылки на строки вы бы сделать:

<cfset URL = 'domaim.com/page/us/' /> 
<cfset match = REFindNoCase("(/us/)|(/ca/)", URL, 1, true) /> 
<cfif arrayLen(match) GT 0> 
    <cfset value = Mid(URL,match.pos[1],match.len[1]) /> 
    <cfswitch expression="#value#"> 
     <cfcase value="/us/"> 
      <!--- Do something for US match ---> 
     </cfcase> 
     <cfcase value="/ca/"> 
      <!--- Do something for CA match ---> 
     </cfcase> 
     <!--- ETC ---> 
    </cfswitch> 
<cfelse> 
    <!--- Do something if no match found ---> 
</cfif> 

В этом случае величина будет равна /us/. Или все равно. Я пишу все это здесь, а не тестирую на своем сервере. Вам нужно будет отрегулировать это, если вы хотите покрыть несколько совпадений в строке.

+0

Вы также можете использовать список кодов стран, а не группировать их, т. Е. ' "/ (нас | ча | эс | гб) /"' – Leigh

Смежные вопросы