Имея следующий код в PHP
krsort($smileys);
foreach($smileys as $k => $v){
$row['message'] = str_replace($k,'<img src="'.$v.'" />',$row['message']);
}
//place links if allowed
if($display_links == 'yes'){
preg_match('/(http:\/\/[^\s]+)/', $row['message'], $text);
$hypertext = '<a href="' . $text[0] . '" target="_blank">' . $text[0] . '</a>';
$row['message'] = preg_replace('/(http:\/\/[^\s]+)/', $hypertext, $row['message']);
}
Я делаю реплику в Coldfusion как:
<cfset structsort(smileys)>
<cfloop collection="#smileys#" item="k">
<cfset row.message = replace(smileys[k],'<img src="smileys[k]">','all')>
</cfloop>
для отображения ссылок, я полностью потерян
Точно сказать не могу именно так что вы после, но кажется, что вам просто не нужны знаки фунта вокруг ваших #smileys [k] # … так …
<cfset structsort(smileys)>
<cfloop collection="#smileys#" item="k">
<cfset row.message = replace(smileys[k],'<img src="#smileys[k]#">','all')>
</cfloop>
или же…
<cfset structsort(smileys)>
<cfloop collection="#smileys#" item="k">
<cfset row.message = replace(smileys[k],'<img src=' + smileys[k] + '>','all')>
</cfloop>
Разве вам не удобнее делать все это в сценарии, а не в тегах? Похоже, немного меньше для вас.
Этот PHP-код заменит контент на HREF html только в случае строки http | https, я не могу помочь вам с Coldfusion. Но я уверен, что вы должны обнаружить строки, начинающиеся с протокола HTTP.
Вы можете многому научиться из очень похожих вопросов. Это может помочь вам: Оберните URL в строку тегами href, используя Coldfusion
Вы можете адаптировать найденный там код регулярного выражения в
<cfset structsort(smileys)>
<cfloop collection="#smileys#" item="k">
<cfset row.message = ReReplaceNoCase (smileys[k], "((http|https)://[a-z0-9\.\-_:~@##%&/?+=]+(.jpg|.gif|.png))", "<img src='\1'>", "all") />
</cfloop>
<cfset structsort(smileys)>
<cfset row.message = StructNew()>
<cfloop collection="#smileys#" item="k">
<cfset row.message[k] = ReReplaceNoCase (smileys[k], "((http|https)://[a-z0-9\.\-_:~@##%&/?+=]+(.jpg|.gif|.png))", "<img src='\1'>", "all") />
</cfloop>
С учетом вышеизложенного, каждый раз, когда вы вызываете #smileys [any_key] # после этого цикла, вы также можете вызывать # row.message [any_key] #. Хорошо, если вы пытаетесь сохранить данные скоординированными.
<cfset row.message = ArrayNew(1)>
<cfset structsort(smileys)>
<cfloop collection="#smileys#" item="k">
<cfset row.message[ArrayLen(row.message)] = ReReplaceNoCase(smileys[k], "((http|https)://[a-z0-9\.\-_:~@##%&/?+=]+(.jpg|.gif|.png))", "<img src='\1'>", "all") />
</cfloop>
С помощью вышеприведенного вы можете перебрать массив или преобразовать его в список для вывода преобразований.
В каждом варианте вы заметите (.jpg|.gif|.png)
в конце регулярного выражения в списке с разделителями. Вы можете добавить больше в этот список или удалить его.
Кроме того, «ряд» не имеет особого значения в холодном синтезе, я не уверен, что это имеет значение в php. Использование «строки» взаимозаменяемо с любым другим именем структуры. В этом случае вам нужно объявить его, прежде чем вы сможете назначить ему ключи («message» является ключом структуры «row»).
<cfset row = structNew()>
Будет идти до любого из приведенных выше вариантов кода.