#11 peter
Je to OK, takhle mi to bude stacit.
Moc dik za pomoc!
#6 Kit
Text je samozrejme pouze testovaci a je napsan tak, aby otestoval script.
V reálu bude script upravovat obsah článků - do DB se bude generovat seznam slov, ty pak tento script v clanku pretvori za odkazy na jine clanky.
Diky za pomoc, snad se zadari.
#3 peter
Připravil jsem k tomu malý test, zdroj zde:
<!DOCTYPE html>
<html>
<head>
<title>Řezací plotr | UV STAR</title>
<meta charset="UTF-8" />
</head>
<body>
<?php
$links = array((object) array('word' => 'materiály', 'anchor' => '/produkty/' , 'title' => 'title'));
$html = '<p>materiály <a href="asdf" title="materiály"> asdf materiály asdf</a> asdf asdf materiály asd <strong>materiály</strong> <img alt="asdf materiály asdf " src="/www/images/zoomovatko.jpg" height="30" /></p>';
echo 'Originalni text';
echo $html;
$patterns = array();
$replacements = array();
foreach ($links AS $link) {
$patterns[] = '/([^\"!\/!])('.$link->word.')([$\s\.\<])/i';
$replacements[] = '$1<a href="' . $link->anchor . '" title="' . $link->title . '">$2</a>$3';
}
echo 'Novy text';
echo preg_replace($patterns, $replacements, $html);
echo 'Takhle by mel vypadat';
echo '<p><a href="/produkty/" title="title">materiály</a> <a href="asdf" title="materiály"> asdf materiály asdf</a> asdf asdf <a href="/produkty/" title="title">materiály</a> asd <strong><a href="/produkty/" title="title">materiály</a></strong> <img alt="asdf materiály asdf " src="/www/images/zoomovatko.jpg" height="30" /></p>';
?>
</body>
</html>
Výsledný produkt:
Spatne je:
Pomocí JS to přepisovat nechci, je to hlavně pro vyhledávacě...
Zdravím,
potřeboval bych poradit s regulárním výrazem.
určitá slova v textu (HTML text) bych potřeboval nahradit odkazem. To samo o sobě není problém, chyba nastává, když je nahrazované slovo uvnitř atributu (napr. alt obrázku). Pak se odkaz vložít do altu a to by neměl. Stejně tak odkaz nesmí nahradit slo, která již v odkazu je. Tedy vyloučit i slova, která se nacházejí v tagu "a", ale nevyloučit slova, která jsou v např. v tagu "strong". Nyní se používá:
$patterns[] = '/([^\"!\/!])('.$r->word.')([$\s\.\<])/i';
$replacements[] = '$1<a href="' . $r->anchor . '" title="' . $r->title . '">$2</a>$3';
Je to trochu zbastlený. Hlavně to nevyločí slova, která se nachází uvnitř atributu a jsou z obou stran krytá dalším textem.
Doufám, že je to srozumitelné a díky za pomoc.