Oznámení

Provoz fóra byl ukončen

jde při oneline vygenerovat „nadpis-clanku“?

před 12 lety

krteczek
Člen | 13

Zdar, napadla mne taková věc, nadpisy článků vždycky zapisuji zvlášť, a napadlo mne že když texy umí při zpracování nejvyžší nadpis zároveň převést na text bezdiakritiky s mezerami nahrazenými pomlčkami, jestli toto nejde i při oneline:

<?php
$nadpis = "nějaký nadpis z inputu";
$texy = new Texy();

$seonadpis = $texy->seoHeadings($nadpis);
echo $seonadpis; //nejaky-nadpis-z-inputu

Asi je to blbost, ale myslím si, že by to taky spoustě lidí vytrhlo trn z paty, a zjednodušilo spoustu administračních rozhraní ve smyslu: „je tam texy tak nepotřebuji vymýšlet něco dalšího“

krteczek

před 12 lety

David Grudl
Nette Core | 6806

Jde to.

$nadpis = "nějaký nadpis z inputu";  // POZOR - musí být v UTF-8
echo Texy::webalize($nadpis);

nejaky-nadpis-z-inputu

Výsledek obsahuje pouze znaky a-z, čísla a spojovník.

Je však možné povolit i další ASCII znaky:

$nadpis = "článek/PHP 5.2.1 a funkce is_array()";
echo Texy::webalize($nadpis); // standardní chování

clanek-php-5-2-1-a-funkce-is-array

echo Texy::webalize($nadpis, '/_.'); // navíc povolíme znaky: / _ .

clanek/php-5.2.1-a-funkce-is_array

Ještě dodám, že funkce funguje korektně i při chybné implementaci iconv (glibc).

před 12 lety

krteczek
Člen | 13

Toto je super, ještě jeden dotaz, když texy převádí text do utf (když v něm není) a nastavíme

$texy->encoding = 'iso-8859-2';

provede texy překodování do utf, zpracuje text a převede ho zase zpět na původní kódování (pokud se nemýlím)

bude splněna podmínka musí být v UTF-8 nebo ne? a pokud ne existuje zpusob jak to vnutit texy tak aby text překodoval do utf a potom teprve prohnal webalize?

díky krteczek

před 12 lety

David Grudl
Nette Core | 6806

nechápu…

před 12 lety

krteczek
Člen | 13

Používám texy pro php4
Hledám řešení které musí fungovat na php4 i php5:

  1. zpracovávaný text v je jiném kódování než utf-8, například iso-8859–2
  2. umí texy toto kódóvání (iso-8859–2) při použití: Texy::webalize($nadpis); převézt na utf-8 před zpracováním, nebo musím použít nejprve samostatně funkci iconv?
  3. pokud musím před použitím webalize(), převézt text do utf-8, lze použít TexyUtf? Jak?

před 12 lety

David Grudl
Nette Core | 6806

Texy::webalize($nadpis) očekává vstup v UTF-8, to jsem psal už výše.

Převody mezi kódováním se v Texy realizují funkcí iconv (tu volají i metody třídy TexyUtf). Ale pozor, ta nemusí být na každém PHP 4 hostingu povolena. Teoreticky se lze jednomu volání iconv vyhnout, protože fce Texy::webalize() pomocí ní převádí text z UTF-8 do WINDOWS-1250. Pokud máš text v ISO-8859–2, můžeš si přepsat webalize() tak, aby převáděla pomocí strtr().