Autor Zpráva
Medvídek
Profil
Zdravíčko, mam jeden zádrhel.
v DB mam uloženy názvy, které bych chtěl nahradit.

Příklad:

$dj="Matěj";
$dj=str_ireplace("matěj", "<a href='#' title='Matějovy stránky' target='_blank'>Matěj</a>", $dj);

Zde je vše v pořádku. Ale chtěl jsem mít ošetřeno i to, že někdo může zadat toto: Matěj, matej, dj matej, dj matěj, djmatej, djmatěj.
A když sem to chtěl ošetřit všechno, nastane samozřejmě situace, kdy se to začne přepisovat navzájem.

Existuje nějaká funkce, která by našla v řetězci hledaný výraz z pole a nahradilo ho mým řetězcem ?
Mam pouze funkci pro hledání v řetězci z pole, kde jsem schopnej z podmínky zjsitit, jestli se řetězec nachází, ale už nevím, jak ho nahradit :(

<?php
function strposa($haystack ,$needles=array(),$offset=0){
    $chr = array();
    foreach($needles as $needle){
        if (strpos($haystack,$needle,$offset)) {
          $chr[] = strpos($haystack,$needle,$offset);
       }
    }
    if(empty($chr)) return false;
    return min($chr);
}

$string = "This is my string, very simple.";

echo strposa($string,array(".",","," ")); // 2
echo strposa($string,array("T")); // 0
echo strposa($string,array("Q","W")); // false
?>
tiso
Profil
Medvídek: keď k tým stringom z oboch strán pridáš medzeru (' Matěj ', ...), tak by ti to skoro fungovalo, problém by bol jednoslovné vs. viacslovné frázy, ale to by sa tiež dalo vyriešiť. Lepšie riešenie dosiahneš s regulárnymi výrazmi.

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: