[ Príspevkov: 4 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 29.12.20
Príspevky: 487
Témy: 138 | 138
Bydlisko: Bytča

Tu som riesil preg_replace ktore pouzivam: https://www.pcforum.sk/spravne-nahradenie-eregi-replace-vt183174.html

nedari sa mi vyriesit jeden problem.

Momentalne mam kod:
Kód:
$prispevok["text"] = preg_replace("/(^| |>)(www([.]?[a-zA-Z0-9_\/-?])[^< ]*)/i", "\\1<a href=\"http://\\2\" target=\"_blank\" >\\2</a>", $prispevok["text"]);       
      
$prispevok["text"] = preg_replace("/(^| |>)(http([s]?):\/\/([.]?[a-zA-Z0-9_\/-?])[^< ]*)/i", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $prispevok["text"]);


- ak kod obsahuje www link tak mi to pekne namapuje a je to klikatelne. OK.

Moja poziadavka: Ak $prispevok["text"] obsahuje tieto presne specificke www adresy: http://www.adresa1.com, http://www.adresa2.com, http://www.adresa3.com ... v hociakom tvare, t.j. priklad http://www.adresa1.com/clanky/123/clanok1 atd atd ...

Tak pre tieto 3 adresy chcem aby som to mal klikatelne, ale text viditelny na webe bude "Link na adresy"

Zatial to mam takto:

Kód:
if (stripos($prispevok["text"],'adresa1.com') !== false || stripos($prispevok["text"],'adresa2.com') !== false || stripos($prispevok["text"],'adresa3.com') !== false)
{ $premenna = 'Link na adresy';   } else {$premenna = '\\2';}
      
$prispevok["text"] = preg_replace("/(^| |>)(www([.]?[a-zA-Z0-9_\/-?])[^< ]*)/i", "\\1<a href=\"http://\\2\" target=\"_blank\" >$premenna</a>", $prispevok["text"]);       
      
$prispevok["text"] = preg_replace("/(^| |>)(http([s]?):\/\/([.]?[a-zA-Z0-9_\/-?])[^< ]*)/i", "\\1<a href=\"\\2\" target=\"_blank\">$premenna</a>", $prispevok["text"]);


Ak je v premennej $prispevok["text"] len 1 adresa napr: "Nejaky text http://www.adresa1.com a dalsi text"
- vsetko funguje spravne

Problem je ak v premennej $prispevok["text"] je viacero adries, napr.: "Nejaky text http://www.adresa1.com a dalsi text a dalsia adresa ktora nema byt upravena na Link na adresy http://www.inaadresa.com"

vtedy vsetky adresy sa mi upravia a klikatelny text Link na adresy je aj na adrese, na ktorej by nemal byt, na http://www.inaadresa.com

Dakujem, snad som to vysvetlil :)


Offline

Správca fóra
Správca fóra
Viac www liniek v odkaze a zmena specifickeho linku

Registrovaný: 27.07.07
Príspevky: 3941
Témy: 51 | 51
Bydlisko: Bratislava

Riesenim je pouzit napr. preg_replace_callback, kde budes podla najdenej url nastavovat text linku


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 29.12.20
Príspevky: 487
Témy: 138 | 138
Bydlisko: Bytča
Napísal autor témyOffline : 09.12.2020 22:17 | Viac www liniek v odkaze a zmena specifickeho linku

uf, dakujem, ale nemam sajnu ako tuto funkcu by som mal pouzit.
tie regularne vyrazy su re mna spanielska dedina, pozeral som na popis https://www.php.net/manual/en/function.preg-replace-callback.php
le nie som vobec mudrejsi


Offline

Správca fóra
Správca fóra
Viac www liniek v odkaze a zmena specifickeho linku

Registrovaný: 27.07.07
Príspevky: 3941
Témy: 51 | 51
Bydlisko: Bratislava

Kod, kde kontrolujes konkretne tvary adries a nastavujes, aky text bude pouzity v odkaze, zabalis do druheho parametra, zjednodusene:
Kód:
$prispevok['text'] = preg_replace_callback("@(http(s)?://)?(([a-zA-Z0-9])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@",
                        function($matches) {
                           $text = (stripos($matches[0], "adresa1.com") !== FALSE) ? "Link na adresy" : $matches[0];
                           return '<a href="http'.$matches[2].'://'.$matches[3].'">'.$text.'</a>';
                        },
                        $prispevok['text']);


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
 [ Príspevkov: 4 ] 


Viac www liniek v odkaze a zmena specifickeho linku



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

phpBB3 - Zmena linku

v Redakčné systémy

5

508

01.06.2010 17:36

DARSON

V tomto fóre nie sú ďalšie neprečítané témy.

Modelovanie vyrobnych liniek v 2D

v Grafické programy

4

299

08.02.2015 18:48

Slayer

V tomto fóre nie sú ďalšie neprečítané témy.

chyba v odkaze?

v PHP, ASP

3

328

14.12.2007 19:01

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

Pouzitie # v odkaze

v HTML, XHTML, XML, CSS

3

314

18.06.2009 13:11

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

http://www.mujweb.cz/www/zasmejse podobný script,ale dlhši

v JavaScript, VBScript, Ajax

7

1378

27.12.2008 11:18

jablko05

V tomto fóre nie sú ďalšie neprečítané témy.

I/P: IT knihy Flash8, Tvorba WWW stranek a Programovani WWW

v Predám

11

475

01.04.2014 20:12

jtbs

V tomto fóre nie sú ďalšie neprečítané témy.

AKo spraviť www.**.sk aby sa dala spustiť bez pisania www

v Ostatné

15

1028

12.07.2008 19:02

jablko05

V tomto fóre nie sú ďalšie neprečítané témy.

premenna/hodnota v odkaze

v JavaScript, VBScript, Ajax

2

428

10.05.2009 18:03

zaciatocnik

V tomto fóre nie sú ďalšie neprečítané témy.

nastavenie Height v odkaze, css

v HTML, XHTML, XML, CSS

3

502

22.10.2009 13:36

Krtko

V tomto fóre nie sú ďalšie neprečítané témy.

moze sa sam menit pocet liniek na PCIe porte?

v ATI/AMD grafické karty

8

469

02.01.2008 21:19

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

Excel premenná v odkaze na bunku

v Ostatné programy

0

92

25.08.2014 20:54

m6692

V tomto fóre nie sú ďalšie neprečítané témy.

Presmerovanie www na non-www

v Internetový marketing, SEO, reklama

10

801

24.01.2012 23:18

yanci12

V tomto fóre nie sú ďalšie neprečítané témy.

Zakódovanie linku

v PHP, ASP

2

270

31.10.2011 16:04

richo9996

V tomto fóre nie sú ďalšie neprečítané témy.

www a non-www

v Webhosting a servery

6

807

02.12.2010 13:25

Vlad

V tomto fóre nie sú ďalšie neprečítané témy.

www vs. non-www

v Domény

6

482

24.05.2017 18:12

McLovin

V tomto fóre nie sú ďalšie neprečítané témy.

[VYRIESENE] vytvorenie linku

v PHP, ASP

1

402

11.02.2009 13:41

Tominator



© 2005 - 2021 PCforum, edited by JanoF