Avatar billede ladbye Nybegynder
13. februar 2009 - 13:44 Der er 8 kommentarer og
1 løsning

Splitte string og tilføje span-tag

Hej,

Står i den situation, at jeg er i gang med at lave et template til CMS-systemet Joomla! og har pga. dets begrænsninger, behov for at lave en lille modifikation.

Jeg har lavet et script, der gerne skulle kunne kigge en variabel igennem, finde <h3>-tags'ene, explode indholdet i den streng og sætte en <span class=""></span> uden om det første ord. Det har dog kun lykkedes mig at få det lavet således, at den tager hele indholdet i <h3></h3> og ligge <span> på den.

Er der nogen kloge hoveder der kan tage et kig på koden og se hvor det er den går galt henne?


function doIT($data = '', $css_class = 'first_word')
{
    $data = explode(' ', $data);
    $data[0] = '<span class="'.$css_class.'">'.$data[0].'</span>';
    return implode(' ', $data);
}

function Style_first_word($data = '', $css_class = 'first_word')
{
    return preg_replace("/<h3>(.*)<\/h3>/m", doIT('\1'), $data, -1, $count);
}


På forhånd tak!

Mvh.
Palle Ladbye-Hansen
Avatar billede Slettet bruger
13. februar 2009 - 14:53 #1
måske:

$tag = array('<h3>', '</h3>');
$rep  = array('');
$text    = '<h3>asdasd asdasd sadasdas dasdasd asdasda asdasd asdasd</h3>';
$string  = str_replace($tags, $rep, $text);

$string = explode(" ",$string);

$nums = count($string);

for ($i = 1; $i <= $nums; $i++)
{
$span = $span.$string[$i];
}


return $string[0]'<span>'.$span.'</span>';
Avatar billede Slettet bruger
13. februar 2009 - 14:55 #2
for ($i = 1; $i <= $nums-1; $i++)
Avatar billede ladbye Nybegynder
13. februar 2009 - 15:36 #3
Så vidt jeg kan se, så skulle den i din kode søge efter $tags, i teksten $tekst - og erstatte dem med $rep, der er en tom array?
Avatar billede Slettet bruger
13. februar 2009 - 15:56 #4
det inholder et mellemrum for at splitte ordene... jeg har ikke testet det.. men det burde virke
Avatar billede Slettet bruger
13. februar 2009 - 15:59 #5
sorry.. jeg sover :P din ide var vel at fjerne h3 tagsne... så jeg erstatter dem med ingenting
Avatar billede Slettet bruger
13. februar 2009 - 16:02 #6
$span = $span." ".$string[$i];
Avatar billede Slettet bruger
13. februar 2009 - 16:05 #7
return '<span>'.$string[0].'</span>'." ".$span;
Avatar billede ladbye Nybegynder
13. februar 2009 - 22:36 #8
Mit ønske er ikke, at fjerne <h3>-tags'ene, men derimod foretage en handling på det der er inde i de tags.

Det drejer sig om nogle headings på min side (i Joomla!) der bliver output'ed på en speciel måde, hvor der inde i nogle divs, ligger disse <h3>-tags. Det er en funktion i Joomla! der laver et modul, hvor der bl.a. er heading på - og det er denne heading der skal formateres.

Eksempel - Output:
<div class="module"><h3>My Headings</h3></div>

Eksempel - Efter Funktion
<div class=module><h3><span class="klasse">My</span> Heading</h3></div>

Altså så den finder første ord i <h3>-tagget og lægger en span omkring det ord.
Avatar billede ladbye Nybegynder
18. august 2010 - 12:16 #9
Gammel tråd - lukkes.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester