Avatar billede mjall0w Nybegynder
20. februar 2008 - 22:40 Der er 10 kommentarer

Ignorer tekst mellem <b> og </b>

Hej.
Hvis nu jeg har en tekst der ser ud som følgende:
"En ged <b>jager</b> en lille hare, som <b>leger</b>"

Så vil jeg gerne have at jeg udskriver min tekst uden <b> og det der står imellem så der ville stå:
"En ged en lille hare, som "

Nogle der har en funktion til det eller lign ?
Avatar billede mike2002 Nybegynder
20. februar 2008 - 23:40 #1
Denne her er fra php.net/manual/en/functions.explode.php:

An extension to explode can be explode_assoc.  This is reverse of implode_assoc return by Brian and can be found with implode.

<?php
function explode_assoc($glue1, $glue2, $array)
{
  $array2=explode($glue2, $array);
  foreach($array2 as  $val)
  {
            $pos=strpos($val,$glue1);
            $key=substr($val,0,$pos);
            $array3[$key] =substr($val,$pos+1,strlen($val));
  }
  return $array3;
}

//usage:
$str="key1=val1&key2=val2&key3=val3";
$array=explode_assoc('=','&',$str);
print_r($array);
?>

This outputs:
Array
(
    [key1] => val1
    [key2] => val2
    [key3] => val3
)

Den laver et array med de data, der står imellem glue1 og glue2, og du kunne så bruge </b> og <b> som glue1 og glue2. Dog mangler delen af din tekst frem til det første <b>, men det kan du finde sådan her fx. (utestet):

$text = "En ged <b>jager</b> en lille hare, som <b>leger</b>"
// find første forekomst af <
$needle = "<";
$firstboldtag = stripos($text, $needle);
// put tekst frem til $needle i variable
$starttext = substr($text, 0, $firstboldtag);

Mvh. Michael
Avatar billede mike2002 Nybegynder
21. februar 2008 - 00:05 #2
Det her er testet og udskriver "En ged ".

$text = "En ged <b>jager</b> en lille hare, som <b>leger</b>";
// find første forekomst af <
$needle = "<";
$firstboldtag = strpos($text, $needle);
// put tekst frem til $needle i variable
$starttext = substr($text, 0, $firstboldtag);
echo $starttext;

Hvis du vil fjerne mellemrummet til sidst, ændrer du næstsidste linje til

$starttext = substr($text, 0, $firstboldtag-1);
Avatar billede olebole Juniormester
21. februar 2008 - 00:38 #3
<ole>

$str = "En ged <b>jager</b> en lille hare, som <b>leger</b>";
$str = preg_replace("#<b>(.*?)</b>#i", "", $str);

/mvh
</bole>
Avatar billede mike2002 Nybegynder
21. februar 2008 - 12:04 #4
Tænkte nok at der måtte findes en smartere måde.....
Avatar billede mjall0w Nybegynder
21. februar 2008 - 22:53 #5
Det virker perfekt det du har det olebole, og lidt mere simpelt end den anden funktion ;)
Har bare lige et spørgsmål til dit lille script der, er det muligt at gøre så den tager ALT imellem <b> og </b>. Som det er lige nu skal det være på linje med, så hvis der f.eks står i HTML koden:
"<b>
En fed lille ged
</b>
går en tur"

Så virker det ikke, da det skal være på linje med før det fjerne det. Findes der en løsning på dette ?
Avatar billede olebole Juniormester
21. februar 2008 - 23:06 #6
Prøv dette i stedet:
  $str = preg_replace("#<b>(.*?)</b>#im", "", $str);
Avatar billede smitten1 Nybegynder
21. februar 2008 - 23:07 #7
#is

hvis jeg ikke husker helt forkert
Avatar billede olebole Juniormester
21. februar 2008 - 23:08 #8
Glem min sidste kommentar, men prøv:
    $str = preg_replace("#<b>([\w\W]*?)</b>#i", "", $str);
Avatar billede olebole Juniormester
21. februar 2008 - 23:09 #9
- eller smitten1's løsning  ;o)
Avatar billede mjall0w Nybegynder
19. februar 2009 - 17:49 #10
undskyld, glemte alt om denne tråd..
Både Mikes og Ole's kan bruges..
Hvis i begge ligger et svar ville det være kanon..
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