Autor Zpráva
SteveO
Profil *
Zdravím,
pomohl by někdo s regulárem? Potřeboval bych ze stringu dostat první tři slova, ale neuvažovat jednoznaková slova a číslice.

Takže by vyhovovalo všechno toto:

slovo1 slovo2 slovo3
slovo1 a slovo2 slovo3
slovo1 123 slovo2 slovo3
slovo1 456 slovo2 a slovo3

Díky moc.
Kcko
Profil
SteveO:
Regulár možná zbytečně složitý.

1) explodnout podle mezery
2) procházet cyklem vzniklé pole, a dle vlastní logiky uložit do proměnné / pole pouze slova, které potřebujete a po dosažení limitu (tj. 3) cyklus ukončit.
Taps
Profil
SteveO:
<?
function zkraceni($text){
$slova = explode(" ",$text);
foreach($slova as $index => $s){
    if(strlen($s) == 1) continue;
    elseif(is_numeric($s)) continue;
    $uprava[] = $s;
    if($index == 3) break;
    }
return implode(" ",$uprava);
}

echo zkraceni("slovo1 slovo2 a slovo3 slova5 slova6"); 
?>
Chro.
Profil
Když už jsem byl pomalejší...
function getfirst3($text)
{
if (substr_count($text, ' ') < 2) return $text;
$words = explode(' ', $text);
$output = array();
$i = 0;
foreach ($words as $word)
{
$output[] = $word;
if (strlen($word) < 2 || ctype_digit($word)) continue;
$i++;
if ($i === 3) break;
}
return implode(' ', $output);
//pro zobrazení v prohlížeči by bylo možná vhodné použít jako spojovač &nbsp;
}

//použití
echo getfirst3('TestTest Text');
//zobrazí to samé, počet mezer je menší než 2
echo getfirst3('Kočka, pes a prase jsou kamarádi.');
//Kočka, pes a prase
echo getfirst3('Nezjištná pomoc šlechtí člověka.');
//Nezjištná pomoc šlechtí

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: