Autor | Zpráva | ||
---|---|---|---|
Alois Marhoul Profil * |
#1 · Zasláno: 11. 7. 2007, 09:11:54
Ahoj
Potřeboval bych skript, který by text před vystavením na web prošel a pokud v něm najde řetezec z pole, pak s tímto řetězcem něco provedl. Například máme publicistický článek s polemikou nad novým prezidentem. Pokud se v tomto článku objeví řetězec "Václav Klas" rád bych jej uzavřel do tagů <a> a přidal tak odkaz na jeho životopis. V databázi by tedy vedle klasické tabulky článků byla navíc tabulka linkovaných řetězců například ve tvraru: id int retezec char url char Nevíte o již hotovém skriptu? Nebo jak jednoduše na to? |
||
T1000 Profil |
#2 · Zasláno: 11. 7. 2007, 09:36:11
zkus příkaz str_replace
|
||
Alois Marhoul Profil * |
#3 · Zasláno: 11. 7. 2007, 09:47:59
jak zajistím aby se ignoroval rozdíl malá/velká písmena? Tedy "Václav Klaus" je stejné jako "václav klaus".
|
||
Kcko Profil |
#4 · Zasláno: 11. 7. 2007, 11:09:04
v PHP5 to bude str_ireplace();
v PHP4 asi jen pres regularni vyrazy (perl) |
||
one Profil |
#5 · Zasláno: 11. 7. 2007, 11:19:21
$prezident_small = StrToLower($prezident);
->převede Václav klaus na václav klaus, prostě všechna velká písmena na malá takže pokud chceš nějakou podmínku, kde to budeš chtít porovnat, tak tam hoď $prezident_small a v echu hoď jen $prezident a tím docílíš, že ve výstupu to budeš mít takto: Václav klaus... samozřejmě je více řešení, tohle možná není nejlepší, ale k zahození taky není, můžeš si počkat na "odborníky", protože ja se teprve php učím :). |
||
Alois Marhoul Profil * |
#6 · Zasláno: 11. 7. 2007, 15:46:20
díky
A ještě jedna vychytávka, kterou jsem si teď uvědomil. jak ošetřit aby se toto nahrazení nedělo v případě, už tam ten odkaz vložil ručně redaktor. Tedy rozšířený řetězec má tvar ...>Václav Klaus</a> |
||
bukaj Profil |
#7 · Zasláno: 11. 7. 2007, 17:45:59
jak ošetřit aby se toto nahrazení nedělo v případě, už tam ten odkaz vložil ručně redaktor. Tedy rozšířený řetězec má tvar ...>Václav Klaus</a>
na to by to už chtělo ty regulární výrazy. zde je odkaz na fci preg_replace(), a zde shrnutí syntaxe. popř. seriál na intevalu. |
||
Alois Marhoul Profil * |
#8 · Zasláno: 12. 7. 2007, 11:03:11
takže třeba takto?
$patterns[] = "/(Václav Klaus)$/i ?(?!< ?/a ?>)"; //ignoruji velká malá píslema //kontroluji zda za prohledávaným řetězcem není "< /a >", včetně možných mezer $patterns[] = "/(Václav Havel)$/i ?(?!< ?/a ?>)"; $replacement[] = "<a href="http://www.klaus.cz" >\1</a>"; $replacement[] = "<a href="http://www.havel.cz" >\1</a>"; echo preg_replace($pattern, $replacement, $text_clanku); definice polí $patterns a $replacement budu doplňovat cyklem podle obsahu tabulky nahrazovaných retezcu v DB. je tam někde chyba... |
||
bukaj Profil |
#9 · Zasláno: 12. 7. 2007, 12:15:58
je tam někde chyba...
pokud to bylo konstatování, nezbývá než souhlasit. pokud otázka, tak odpověď zní ano. $patterns[] = "/(Václav Klaus)(?!<\a>)/i"; $patterns[] = "/(Václav Havel)(?!<\a>)/i"; v $replacement by vše mělo být dobře. (předpokládám, že fórum opět sežralo zpětná lomítka.) |
||
Alois Marhoul Profil * |
#10 · Zasláno: 12. 7. 2007, 12:33:30
funguje díky
|
||
Časová prodleva: 18 let
|
0