Anonymní profil Josef – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Josef – Programujte.comAnonymní profil Josef – Programujte.com

 

Příspěvky odeslané z IP adresy 85.119.89.–

Josef
PHP › Interní prolinkování (nahraz…
10. 2. 2016   #208518

#11 peter

Je to OK, takhle mi to bude stacit. 

Moc dik za pomoc!

Josef
PHP › Interní prolinkování (nahraz…
8. 2. 2016   #208501

#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.

Josef
PHP › Interní prolinkování (nahraz…
8. 2. 2016   #208492

#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:

http://www.uvstar.cz/test.php

Spatne je:

  • udela odkaz v odkaze
  • prepise obrazek

Pomocí JS to přepisovat nechci, je to hlavně pro vyhledávacě...

Josef
PHP › Interní prolinkování (nahraz…
8. 2. 2016   #208487

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.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý