Avatar billede ffn Nybegynder
09. september 2006 - 09:55 Der er 24 kommentarer og
2 løsninger

Acronym script

Hejsa,

Jeg søger et acronym script - er der nogle der ligger inde med et sådan?

Et acronymscript er et script der leder ens tekst igennem for acronymer og hvis man har indtastet info for PET så hvert sted hvor teksten indeholder ordet PET så ved mouseOver får man vist den tekst man har tilknyttet ordet f.eks.: Politiets efterretningstjeneste...
Avatar billede jensgram Nybegynder
09. september 2006 - 10:50 #1
$abbrs = array(
    'PET' => 'Politiets Efterretningstjeneste',
    'PHP' => 'Hypertext Preprocessor'
);

$from = array();
$to = array();

foreach ($abbrs as $k => $v) {
    $from[] = '/\b' . $k . '\b/';
    $to[]  = '<abbr title="' . $v . '">' . $k . '</abbr>';
}

$body = preg_replace($from, $to, $body);


Utestet!
Avatar billede jensgram Nybegynder
09. september 2006 - 10:52 #2
Tanken er, at du så kun skal rette i $abbrs-array'et:


$abbrs = array(
    'PET' => 'Politiets Efterretningstjeneste',
    'PHP' => 'Hypertext Preprocessor'
);



Det er måske ikke den smarteste måde, men det burde virke. Du kan evt. bruge <acronym> i stedet - kan ikke huske hvilket der er det "rigtigste"...
Avatar billede coderdk Praktikant
09. september 2006 - 14:31 #3
Det må vel være <abbr> som du skriver, <acronym> er mere beregnet til akronymer, hvilket er noget andet end forkortelser. PHP er en forkortelse og PET er et akronym :) Et akronym skal danne et ord man kan sige...
Avatar billede jensgram Nybegynder
09. september 2006 - 15:35 #4
coderdk > Det er der logik i ;)
Avatar billede ffn Nybegynder
10. september 2006 - 18:59 #5
Okay nu har jeg en database med følgende struktur:

CREATE TABLE `akronymer` (
  `name` varchar(255) NOT NULL default '',
  `description` longtext,
  PRIMARY KEY  (`name`)
)

I min index.php der indeholder variable:
    echo $content["all"];
alt html'en

Hvordan får jeg så gjort sådan at denne løber min html igennem og hver gang den støder på et akronym fra databasen 'name' bliver det erstattet med:

'<acronym title="' . $acronyms[$i]['description'] . '">' . $acronyms[$i]['name'] . '</acronym>';

Er det muligt og hvordan?
Avatar billede ffn Nybegynder
10. september 2006 - 19:17 #6
Jeg fandt denne i forbindelse med et acronym mod til forumet phpBB - jeg håbede man kunne bruge den function, men hvordan?

http://pastebin.ca/166182
Avatar billede coderdk Praktikant
10. september 2006 - 19:57 #7
Noget i stil med:

// Hent dit content til $content['all']
$sql = "SELECT name, description FROM akronymer";
$qh = mysql_query( $sql ) or die( mysql_error() );
while ( $row = mysql_fetch_assoc( $qh ) )
{
  $content['all'] = preg_replace( '/' . preg_quote( $row['name'], '/' ) . '/i', '<abbr title="' . $row['description'] . '">\\0</abbr>' );
}
echo $content['all'];
Avatar billede coderdk Praktikant
10. september 2006 - 19:58 #8
Mjah:

$sql = "SELECT name, description FROM akronymer";
$qh = mysql_query( $sql ) or die( mysql_error() );
while ( $row = mysql_fetch_assoc( $qh ) )
{
  $content['all'] = preg_replace( '/' . preg_quote( $row['name'], '/' ) . '/i', '<abbr title="' . $row['description'] . '">\\0</abbr>', $content['all'] );
}
echo $content['all'];
Avatar billede ffn Nybegynder
10. september 2006 - 20:05 #9
hallo mand - så rykker vi vist... jeg er i fuld gang med at teste :D
Avatar billede ffn Nybegynder
10. september 2006 - 20:19 #10
Kan du komme med et svar?

Jeg har dog ændret det til:

$content['all'] = preg_replace( '/' . preg_quote( $row[name'], '/' ) . '/i', '<abbr title="' . $row['description'] . '"><span class="abbr" title="' . $row['description'] . '">\\0</span></abbr>', $content['all'] );

Og indsat følgende i min CSS
abbr, acronym, span.abbr {
  cursor: help;
  border-bottom: 1px dashed #000;
}

Det ser ud til spille :D

Tommel op!
Avatar billede coderdk Praktikant
10. september 2006 - 20:28 #11
Cool :) Måske skal jensgram og jeg dele dem? :)
Avatar billede jensgram Nybegynder
10. september 2006 - 20:29 #12
Ups - jeg har først lige kigget med nu.
Avatar billede ffn Nybegynder
10. september 2006 - 20:38 #13
skal vi lave en fordeling der hedder

Coderdk 100
jens 44

?
Avatar billede jensgram Nybegynder
10. september 2006 - 20:40 #14
Hmm - fint med mig.
Avatar billede ffn Nybegynder
10. september 2006 - 20:42 #15
Så og nu med karma :D
Avatar billede jensgram Nybegynder
10. september 2006 - 20:44 #16
Så takker jeg.
Avatar billede ffn Nybegynder
10. september 2006 - 22:54 #17
Kan jeg få lidt bonushjælp idet der er et problem når jeg laver et acronym der hedder NY så bliver:

Intet Nyt er godt nyt - så bliver Ny og ny til et acronym

Altså der skelnes ikke mellme store og små bogstover og heller ikke om Ny/NY/nY indgår i et andet ord, som Nyt...

Hvordan fixes det?
Avatar billede coderdk Praktikant
10. september 2006 - 23:04 #18
Prøv lige:

$content['all'] = preg_replace( '/(^|\w)' . preg_quote( $row[name'], '(\w|$)/' ) . '/i', '<abbr title="' . $row['description'] . '"><span class="abbr" title="' . $row['description'] . '">\\0</span></abbr>', $content['all'] );
Avatar billede coderdk Praktikant
10. september 2006 - 23:05 #19
Ja, det må så blive:

$content['all'] = preg_replace( '/(^|\w)(' . preg_quote( $row[name'], ')(\w|$)/' ) . '/i', '<abbr title="' . $row['description'] . '"><span class="abbr" title="' . $row['description'] . '">\\2</span></abbr>', $content['all'] );
Avatar billede ffn Nybegynder
11. september 2006 - 07:08 #20
Warning: preg_replace(): Compilation failed: missing ) at offset 9 in /var/www/vhosts/....../content.func.inc.php on line 477

:S
Avatar billede ffn Nybegynder
11. september 2006 - 07:16 #21
Jeg er ved en comp. igen onsdag - skal på kursus indtil da....
Avatar billede coderdk Praktikant
11. september 2006 - 09:37 #22
Mig der er stiv:

$content['all'] = preg_replace( '/(^|\w)' . preg_quote( $row[name'], '/' ) . '(\w|$)/i', '<abbr title="' . $row['description'] . '"><span class="abbr" title="' . $row['description'] . '">\\0</span></abbr>', $content['all'] );
Avatar billede jensgram Nybegynder
11. september 2006 - 11:16 #23
Ja, vi skal have fjernet i-modifieren som det første.

Men er det så ikke nemmere med \b (coderdk)?
Avatar billede coderdk Praktikant
11. september 2006 - 11:50 #24
jensgram, Jo for satan! Det er mig der tåger :) Det var meningen det skulle være word boundary og ikke word char :-D /i er nok også god at fjerne ja :)
Avatar billede jensgram Nybegynder
11. september 2006 - 12:44 #25
$content['all'] = preg_replace( '/(^|\b)' . preg_quote( $row[name'], '/' ) . '(\b|$)/', '<abbr title="' . $row['description'] . '"><span class="abbr" title="' . $row['description'] . '">\\0</span></abbr>', $content['all'] );

Enig?
Avatar billede ffn Nybegynder
12. september 2006 - 17:46 #26
jep det ser ud til at spille :D

Super Takker ;D
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