M muskot Medlem sedan jan. 2002 7 905 inlägg Frågan 6 sep. 2003 19:59 #1 Finns det någon inbyggd funktion som returnerar det ord som står på en angiven position i en sträng? Har letat och letat och letat utan resultat.
Typ så här alltså:
$text = "jag heter markus";
eftersökt_funktion($text, 2); // returnerar "heter"
Peeer Medlem sedan mars 2002 5 907 inlägg Re: Funktion som returnerar ord nr x i en sträng?
Ingen inbyggd vad jag vet, men något sådant här borde väl fungera?
function word($str,$nr)
{
$temp = explode(" ",$str);
return $temp[$nr-1];
}
$text = "jag heter markus";
word($text, 2); // returnerar "heter"
M muskot Medlem sedan jan. 2002 7 905 inlägg Tack Peeer.
Dock hittade jag precis str_word_count som klarade av att göra det jag ville, även om den inte fungerar som jag beskrev det.
$text = "jag heter markus";
$word = str_word_count($text, 1);
echo $word[1]; // returnerar "heter"
(Tycker det är påfallande ofta man hittar grejerna man söker alldeles efter man ställt frågan.)
Matte Medlem sedan aug. 2000 2 975 inlägg Jag känner inte hellertill någon sådan funktion (kan finnas ändå :) ), men du skulle kunna göra något liknande detta med str_word_count:
function pos_word($text, $pos) {
$words = str_word_count($text, 1);
if ($pos < sizeof($words) && $pos > 0) {
return $words[$pos-1];
} else return '';
}
$text = "jag heter markus";
echo "Ord 2 är <b>".pos_word($text, 2)."</b>";
M muskot Medlem sedan jan. 2002 7 905 inlägg Tack även till Matte.
Men av någon anledning verkar inte ÅÄÖ fungera med str_word_count. Att lägga till följande rad högst upp löste problemen med å och ö, men ä fungerar fortfarande inte:
setlocale (LC_ALL, "swedish");
Förslag?
Matte Medlem sedan aug. 2000 2 975 inlägg Testa det här (två varianter):
function pos_word_entities($text, $pos) {
$text = html_entity_decode($text); // PHP >= version 4.3.0
$words = preg_split("/[^\\w]+/", $text);
if ($pos < sizeof($words) && $pos > 0) {
return htmlentities($words[$pos-1]);
} else return '';
}
function pos_word($text, $pos) {
$words = preg_split("/[^\\w]+/", $text);
if ($pos < sizeof($words) && $pos > 0) {
return $words[$pos-1];
} else return '';
}
// Text utan HTML-entiteter
$text = "jag heter Åke Svensson";
echo "Ord 3 är <b>".pos_word($text, 3)."</b><br>";
// Text med HTML-entiteter
$text = "jag heter Åke Svensson";
echo "Ord 3 är <b>".pos_word_entities($text, 3)."</b>";