webForumDet fria alternativet

Behöver hjälp med en funktion

PHP

1 svar · 269 visningar · startad av shun

Medlem sedan mars 2004230 inlägg
Frågan#1

I ett HTML-dokument anger jag

<abbr title="kalorier">kcal</abbr>

men vill gärna fixa ett script som gör om detta till

<abbr title="kalorier"><span class="abbr" title="kalorier">kcal</span</abbr>

i och med IEs behandling av abbr. Helst av allt skulle jag vilja använda mig av en funktion som letar efter förkortningar i en lista och ersätter t.ex. kcal med

<abbr title="kalorier"><span class="abbr" title="kalorier">kcal</span</abbr>

Skulle det kunna fungera tror ni? :) Ifall det går att lösa med en funktion önskar jag en liten, liten förklaring om vad man ska skriva i PHP-dokumentet för att infoga funktionen..

edit- Antar att jag måste använda mig av preg_replace eller str_replace samt en array med mina förkortningar/utskrivna ord i. Jag använder mig inte av en databas utan inkluderar alla filer i index.php, kan man leta efter förkortningen på en hel sida utan att det är en variabel?

edit2- Ändrade rubriken till något mer tilltalande för att någon förhoppningsvis tittar in.. :/

Medlem sedan sep. 200436 inlägg
#2

DU kan använda dig av regjulära uttryck så här:

<?php
$test_string = "<abbr title=\"kalorier\">kcal</abbr>"; # en test grej bara

### skapa arrays med vad som ska ersättas och med vad
$patterns[0] = "|<abbr title=\"(.*?)\">(.*?)</abbr>|s";
$replacements[0] = "<abbr title=\"\$1\"><span class=\"abbr\" title=\"\$1\">\$2</abbr>";

### sortera arraysen för säkerhetsskull
#( i fall du använder flera olika mönster och replacements)
ksort($patterns);
ksort($replacements);

// utför ersättandet
$test_string = preg_replace($patterns, $replacements, $test_string);
## här har du en ny sträng
echo "<br />Ny stärng $test_string";
?>

för mer info om hur detta fungerear hänvisar jag till en tutorial jag hittat. http://www.phpfreaks.com/tutorials/123/2.php

Om du har två uttryck skulle du kunna göra en funktion så här

<?php
function byt_ut($ord,$title,$string) {
### skapa mönstret och vad som ska bytas ut
$pattern = "|".$ord."|s";
$replacement = "<abbr title=\"".$title."\"><span class=\"abbr\" title=\"".$title."\">$ord</abbr>";

// utför ersättandet
$string = preg_replace($pattern, $replacement, $string);
return $string;
}

# sedan anropar du funktionen så här
echo byt_ut('kacl','kalorier','Jag fick i mig 1000 kacl till frukost');
?>

253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)