I need help understanding how to make the loop continue after finding the first occurrence.
The loop created by @luxdvie is brilliant (link here). I'm trying to extend that loop to find all image file names and put them into an array. I'm testing it at trycf.com (link here) but sometimes our internet filter at work blocks the site.
I think the logic to get this done is to find the first occurrence of an image source, set the end of that as the start of the new step and continue looking for the next occurrence until the end of the text area.
Here is the code I'm trying to do this with:
<cfset search_text_area = #form.overview_text#>
<cfset length_of_text_field = #Len(search_text_area)#>
<cfset image_url_header = "https://ImagesFolder/subFolder/">
<cfset image_url_closure = '"'>
<cfset image_extension_png = ".png">
<cfset image_list_array_on_submit =[]>
<cfset continue_searching_url = true>
<cfset first_pass = true>
<cfset go_thru_again = false>
<cfset counter = 0>
<cfloop condition = "continue_searching_url eq true">
<cfoutput>
<cfset counter = counter+1>
<cfif counter GTE 5>
<script>console.log('WARNING! Long loop: x ' + <cfoutput>#counter#</cfoutput>);</script>
<cfbreak>
</cfif>
<cfif starting_index_url eq 0>
<cfset continue_searching_url = false>
<cfcontinue>
</cfif>
<cfif first_pass eq true>
<cfset starting_index_url = find(image_url_header, search_text_area)>
<cfset ending_index_url = find( image_url_closure , search_text_area, starting_index_url )>
<cfset full_occurrence_url = mid(#search_text_area#, (#starting_index_url#), ((#ending_index_url#)-#starting_index_url#))>
<cfset local_occurrence_url = mid(#search_text_area#, (#starting_index_url#), ((#ending_index_url#)-#starting_index_url#))>
<cfset ArrayAppend(image_list_array_on_submit, (local_occurrence_url))>
<cfset first_pass = false>
<cfset go_thru_again = true>
<cfset starting_index_url = #ending_index_url#>
</cfif>
<cfif go_thru_again = true>
<cfif starting_index_url NEQ length_of_text_field>
<cfset starting_index_url = find(image_url_header, search_text_area)>
<cfset ending_index_url = find( image_url_closure , search_text_area, starting_index_url )>
<cfset full_occurrence_url = mid(#search_text_area#, (#starting_index_url#), ((#ending_index_url#)-#starting_index_url#))>
<cfset local_occurrence_url = mid(#search_text_area#, (#starting_index_url#), ((#ending_index_url#)-#starting_index_url#))>
<cfset ArrayAppend(image_list_array_on_submit, (local_occurrence_url))>
<cfset first_pass = false>
<cfset go_thru_again = true>
<cfset starting_index_url = #ending_index_url#>
<cfelse>
<cfset starting_index_url = 0>
<cfcontinue>
</cfif>
<cfset go_thru_again = false>
</cfif>
</cfoutput>
</cfloop>
I figured it out, have a look at this code on trycf.com. I'll post it here for reference. To solve this problem, I started with a conditional loop. Inside that loop I use IF statements to switch between a first pass and subsequent passes. I check for certain conditions to exit the loop. My code relies on ColdFusion's find() and mid() functions to locate an image tag's source URL.
<cfsavecontent variable="SearchText">
Two images with source set to URL:
<p><img alt="Blah, Blah, Blah" src="https://ImagesFolder/subFolder/large-colored-bullets-3-0-14248.png" style="border-image:none; border:1px solid currentColor; float:left; height:200px; margin:12px; width:200px" /></p>
<p>and one more for testing:<img alt="something here" src="https://ImagesFolder/subFolder/goldmedal.png" style="border-image:none; border:1px solid currentColor; float:left; height:200px; margin:12px; width:200px" /></p>
</cfsavecontent>
<cfset search_text_area = #SearchText#>
<cfset length_of_text_field = #Len(search_text_area)#>
<cfset image_url_header = "https://ImagesFolder/subFolder/">
<cfset image_url_closure = '"'>
<cfset image_extension_png = ".png">
<cfset image_list_array_on_submit =[]>
<cfset counter_array =[]>
<cfset continue_searching_url = true>
<cfset first_pass = true>
<cfset go_thru_again = false>
<cfset counter = 0>
<cfset next_position = -1>
<cfloop condition = "continue_searching_url eq true">
<cfoutput>
<cfset counter = counter+1>
<!---<cfif counter GTE 5>
<cfbreak>
</cfif>--->
<cfif first_pass eq true>
<cfset starting_index_url = find(image_url_header, SearchText)>
</cfif>
<cfif go_thru_again eq true>
<cfset next_position = #ending_index_url#>
</cfif>
<cfif starting_index_url eq 0>
<cfset continue_searching_url = false>
<cfcontinue>
</cfif>
<cfif first_pass eq true>
<cfset ending_index_url = find( image_url_closure , SearchText, starting_index_url )>
<cfset full_occurrence_url = mid(#SearchText#, (#starting_index_url#), ((#ending_index_url#)-#starting_index_url#))>
<cfset local_occurrence_url = mid(#SearchText#, (#starting_index_url#), ((#ending_index_url#)-#starting_index_url#))>
<cfset first_pass = false>
<cfset go_thru_again = true>
<cfset next_position = #ending_index_url#>
<cfset ArrayAppend(image_list_array_on_submit, (local_occurrence_url))>
</cfif>
<cfset ArrayAppend(counter_array, starting_index_url)>
<cfif go_thru_again = true>
<cfif starting_index_url NEQ length_of_text_field>
<cfoutput><span style="color:brown;">#counter#. #starting_index_url#, #next_position#</span><br></cfoutput>
<cfset starting_index_url = find(image_url_header, SearchText, next_position)>
<cfset ending_index_url = find( image_url_closure , SearchText, starting_index_url )>
<cfif starting_index_url eq 0>
<cfset continue_searching_url = false>
<cfcontinue>
</cfif>
<cfset full_occurrence_url = mid(#SearchText#, (#starting_index_url#), ((#ending_index_url#)-#starting_index_url#))>
<cfset local_occurrence_url = mid(#SearchText#, (#starting_index_url#), ((#ending_index_url#)-#starting_index_url#))>
<cfset first_pass = false>
<cfset go_thru_again = true>
<cfset next_position = #ending_index_url#>
<cfoutput><span style="color:blue;">#counter#. #starting_index_url#, #next_position#, #ending_index_url#</span><br></cfoutput>
<cfset ArrayAppend(image_list_array_on_submit, (local_occurrence_url))>
<cfelse>
<cfset go_thru_again = false>
<cfset starting_index_url = 0>
<cfcontinue>
</cfif>
</cfif>
</cfoutput>