Autor Zpráva
sniclman
Profil *
Dobrý den,

mám následující script:
$string = "Počáteční text www.jakpsatweb.cz text uprostřed www.google.com konec věty.";
$string = preg_replace('|(www)\.(.*)\.(.*)( )|U','#1($1) #2($2) #3($3) #4($4)',$string);

výstup: Počáteční text #1(www) #2(jakpsatweb) #3(cz) #4( )text uprostřed #1(www) #2(google) #3(com) #4( )konec věty.

$string = "Počáteční text www.jakpsatweb.cz text uprostřed www.google.com";
výstup:Počáteční text #1(www) #2(jakpsatweb) #3(cz) #4( )text uprostřed www.google.com

a mám problém s vyhledáním řetězce. V příkladu funguje vše v pořádku. Problém nastává pokud není adresa www.něco.něco ukončena mezerou.

Pokoušel jsem upravit script na:
$string = preg_replace('|(www)\.(.*)\.([^ ]*)(|U','#1($1) #2($2) #3($3) #4($4)',$string);


Ale bohužel výstup byl špatný
Počáteční text #1(www) #2(jakpsatweb) #3() #4()cz text uprostřed #1(www) #2(google) #3() #4()com konec věty.


Můžete mi prosím poradit jak správně zapsat podmínku pro vyhledání řetece tak aby poslední řetězec (doména) nesměl obsahovat mezeru a libovolný počet znaků?

Děkuji předem za veškeré rady.
Joker
Profil
sniclman:
Jestli jsem tomu porozuměl (s čímž jsem teda měl problém, například stále nechápu kde je jaký konec slova jak je to v titulku), asi by stačilo místo * použít +.
V použití hvězdičky stejně nevidím moc smysl, resp. opravdu má projít třeba: „www..“ jako adresa?

Ještě poznamenám, že na obecnou adresu tohle nemusí fungovat, protože adresa obecně nemusí mít 3 úrovně domén a doména 3. řádu se nemusí jmenovat „www“.
sniclman
Profil *
Joker:

vyřešeno.
echo preg_replace('|(www)\.(.*)\.([^ ]++)|U','#1($1) #2($2) #3($3) #4($4)',$string);

děkuju za nápovědu použít "+"

Uznávám, že výše zmíněný problém jsem mocdobře nedefinoval.

resp. opravdu má projít třeba: „www..“ jako adresa?
Je to systém pro uživatele. Domény 3 řádu používám, "www" ze zvyku už ani nepíšu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0