Hej hej :)
Håller på att trixa lite med reg exp och får naturligtvis inte allt att fungera.
Jag vill att en länk som är för lång ska kortas ner precis som den görs här på forumet.
function shortenString($str, $maxLength)
{
$strLen = strlen($str);
echo "bajs2: ".$strLen." - ".$str."<br />\n";
if ($strLen > $maxLength)
{
echo "bajs<br />\n";
return substr($str, 0, $maxLength * 0.7 - 2)."...".substr($str, $strLen - ($maxLength * 0.3 + 1));
}
return $str;
}
function bbcodeToHtml($text)
{
$preg = array
(
// Url
'/\[url\](.*?)\[\/url\]/' => "<a href=\"\\1\" target=\"_blank\">".shortenString("\\1", 30)."</a>"
);
$text = preg_replace(array_keys($preg), array_values($preg), $text);
return $text;
}
Problemet är att jag inte får med mig URL-strängen till shortenString-funktionen.
När jag gör kontrollen på om strängen är längre än 30 tkn så blir det False. Strängen som kommer in i funktionen är '\1'.
Och visst, det hade jag kunnat acceptera på någe vis men sen när URL:en omvandlas så får jag ändå ut hela länkensträngen mellana-taggarna.
Alltså skiver jag [ url ] qwertyuiop [ /url ] (la in ett par blanksteg extra för att inte webforum skulle omvandla koden) så får funktionen fortfarande in '\1' istället för 'qwertyuiop'. Men länken blri ändå rätt.
Jag fattar inte alls varför det blir så.
Hade varit kanontacksam för lite hjälp. :/