Liels bija mans pārsteigums, kad, mēģinot izmantot S2 iebūvēto funkciju striphtml()
,
lai atbrīvotos no HTML tagiem, apskatīju dīvainu kļūdas paziņojumu. Izrādās,
ka, lai gan tāda funkcija S2 valodā ir, tā nemazam nestrādā. Kompilators gan
laiž cauri bez problēmām, bet.. Nu, ja kāds grib redzēt to kļūdas paziņojumu,
tad pamēģiniet šo funkciju. :)
Lai nu kā, par laimi atradu citu funkciju, kas dara tieši to pašu. Un patiešām
dara. Rakstījis to ir MageBoltRat.
Ja izmantosiet, pieminiet. :)
Mjā, tā kā striphtml()
ir
iebūvētā funkcija, tad to nevar aizvietot, un tāpēc jāizmanto cits nosaukums.
Tāpēc striphtmlnew()
.
######################################## ############################
## divas funkcijas, lai no teksta izmestu HTML tagus.
## S2 jau ir funkcija "striphtml(string
s) : string", taču
## tā nestrādā (lai gan kompilators neiebilst).
## ņemtas no MageBoltRat (http://livejournal.com/users/mageboltra t/)
function striphtmlnew(string in, int maxlen) : string {
var string ans;
var int inside = 0;
var int len = 0;
foreach var int pos (0 .. $in->length()) {
if ("<" == $in->substr($pos, 1)) {
$inside = $inside + 1;
}
if (0 == $inside) {
$ans = $ans + $in->substr($pos, 1);
$len = $len + 1;
}
if (">" == $in->substr($pos, 1) and $inside > 0) {
$inside = $inside - 1;
}
if ($maxlen == $len) {
return $ans + "...";
}
}
return $ans;
}
function striphtmlnew(string in) : string {
return striphtmlnew($in, $in->length());
}
Varbūt kādam noderēs.