Autor Zpráva
maarlin
Profil
Mam takovy problem,
v jednom scriptu jsem pouzil fci ereg_replace , fungovala docela dobře, až na to, ze jeji vykonani trvalo moc dlouho a tudiz mi script casto vyhazoval timeouty.
Proto jsem se rozhodl k migraci/predelani na preg_replace, jenze nevim jak to mam predelat, protoze preg_replace ma zajite jinou syntaxi, nez ereg_replace.
Zde mam priklad, ktery potrebuji predelat na preg_replace:
$vystup = ereg_replace("(.*)(Tady: )(http:\/\/[_a-zA-Z0-9\.\-]{0,100}\/{0,2}[_a-zA-Z0-9\.\-]{0,100}\/{0,2 }[_a-zA-Z0-9\.\-]{0,100}\/{0,2}[_a-zA-Z0-9\.\-]{0,100})(.*)", "\\3", $zdroj);
Retal
Profil
Popiš, co má být požadovaná funkčnost.
Ni7R0
Profil
Jak na to koukám, tak by ten výraz měl být teoreticky jak v POSIX, tak v Perl syntaxi stejně funkční, ale možná jsem něco přehlédl.
Leo
Profil
Zkuste si najit a stahnout programek Regex coach, krome toho byl na interval.cz pekny a vycerpavajici serial o regularnich vyrazech v PHP. Leo
halogan
Profil
Leo: presne tak a ja jeste dodam odkaz na prvni dil:
http://interval.cz/clanky/perl-compatible-regularni-vyrazy-v-php-zakla dni-konstrukce/
krteczek
Profil
pokud má být přepis adresy na odkaz tak skus tohle:


$vystup=preg_replace("#(Tady: )(http://)(.*[^ \n\$\t])( |$|\n\r|\n|\t)#U","\\1<a href=\"\\2\\3\">\\3</a> ",$text);
krteczek
Profil
ještě mužu dat funkci kterou používám
vstup do funkce je text který chceme kontrolovat/převézt

function format_a_href($vstup)
{
//funkce zjistí jestli poslaný text je nebo není odkaz
//v případě že ano, převede ho na <a href="odkaz">odkaz</a>
//zjišťujeme jestli je to odkaz začínající na [url=http://www.
]www.
[/url]
//pokud ano převedeme ho na odkaz.
$v="";
$slova=explode(" ",$vstup);
for($i=0;$i<count($slova);$i++)
{
if(preg_match("#^www.(.*)$#",$slova[$i]))
{
$v.=' <a href="http://'.$slova[$i].'">';
if(strlen($slova[$i])>Max_delka_slova)
{
//pokud je adresa dlouhá zkrátíme ji na $max_delka_slova znaků
//(jen to co je vidět na stránce)
$v.=substr($slova[$i], 0,Max_delka_slova).'...</a> ';
}
else
{
$v.=$slova[$i].'</a> ';
}
}
//je tohle klasický odkaz začínajíci http(s)://,ftp(s)://?
//převedeme ho na odkaz
elseif(preg_match("#^(https?://|ftps?://)(.*)$#",$slova[$i]))
{
//vložíme adresu do odkazu
$v.=' <a href="'.$slova[$i].'">';
//pokud je adresa dlouhá zkrátíme ji na Max_delka_slova znaků
//(jen to co je vidět na stránce, adresa zůstane nezměněná)
if(strlen($slova[$i])>Max_delka_slova)
{
$v.=substr($slova[$i], 0,Max_delka_slova).'...</a> ';
}
else
{
$v.=$slova[$i].'</a> ';
}
}
else
{
$v.=" ".$slova[$i];
}
}
return $v;
}

Toto téma je uzamčeno. Odpověď nelze zaslat.

0