webForumDet fria alternativet

Markera ord i början

PHP

3 svar · 470 visningar · startad av Sabotnick

Medlem sedan feb. 200377 inlägg
Frågan#1

Hej,

Sitter här och funderar och kommer inte på hur man ska göra för att fixa det. Någon som har gjort så man kan markera tre, eller flera, ord automatiskt i början av ett stycke?

Det jag vill ha är resultat som jag visar som exempel i detta stycke.

Medlem sedan mars 20007 896 inlägg
#2

Dela upp strängen i en array på blanksteg, och gör de tre första platserna i arrayen fetstilta.

<?php
/*
Första parameter är strängen som ska ha markerade ord i början
Andra parameter är antalet ord som ska markeras
*/
function markUp($str, $wordCount) {
    $arr = explode(" ", $str);
    if (sizeof ($arr) > $wordCount) {
        $arr[0] = "<b>" . $arr[0];
        $arr[$wordCount - 1] = $arr[$wordCount - 1] . "</b>";
    }

    return implode(" ", $arr);
}

$str = "I den här strängen ska de tre första orden göras fetstilta.";
echo markUp($str, 3);
/*
Resultat: "<b>I den här</b> strängen ska de tre första orden göras fetstilta."
*/
Medlem sedan feb. 200377 inlägg
#3

Jätte tack SPiN. Jag har bara dock en fråga till när jag kör $str = preg_replace ( "/\<br \/><br \/>(.*?)\r\n/e", "markUp('$1')", $str ); fungerar det inte men när jag kör $str = preg_replace ( "/\<br \/><br \/>(.*?)\r\n/is", "\\1", $str ); fungerar det. Hur kan man anropa funktionen från preg_replace?

Medlem sedan mars 20007 896 inlägg
#4

Testa:

...
$str = "Din text här";
$str = preg_replace_callback("|<br /><br />(.*?)\r\n|e", "markUp", $str);
268 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)