Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Ankov
Δημοσιεύσεις: 17
Εγγραφή: 20 Δεκ 2013 02:52

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από Ankov » 24 Δεκ 2013 23:14

Κάνω SELECT από τη Mysql και μετά με mysql_fetch_array παίρνω μια μεταβλητή $dedomena. Ως εδώ καλά. Η μεταβλητή μου αυτή περιέχει κείμενο, links και εικόνες στη μορφή

Κώδικας: Επιλογή όλων

<a href="picture_big.jpg"><img src="picture.jpg" alt="εικόνα" title="εικόνα" border=0 ></a>
Καθώς θέλησα να προσθέσω ένα rel="lightbox" στο <a href=""></a> δηλαδή να το κάνω κάπως έτσι

Κώδικας: Επιλογή όλων

<a rel="rel" href="picture_big.jpg"><img src="picture.jpg" alt="εικόνα" title="εικόνα" border=0 ></a>
Δοκίμασα και κατέληξα στο παρακάτω με την str_replace

Κώδικας: Επιλογή όλων

$dedomena = str_replace&#40;'<a ', '<a rel="lightbox" ', $dedomena&#41;; 
που μου έλυσε το πρόβλημα όντως βάζει το rel="lightbox" σωστά όμως μου δημιουργεί ένα μπέρδεμα μετά με όλα τα υπόλοιπα links που δεν περιέχουν img μέσα τους, δηλαδή σε όλα τα παρακάτω

Κώδικας: Επιλογή όλων

<a href="leuko.html">Λευκό</a>
<a href="galazio.html">Γαλάζιο</a>
<a href="roz">Ρόζ</a>
και γενικά σε όλα τα links σαν αυτά χωρίς εικόνα ! μου τοποθετεί και σε αυτά rel="lightbox" κάτι που γι αυτά δεν θέλω !

Άρα θα πρέπει με κάποιο άλλο τρόπο να κάνω το str_replace ή με κάποια άλλη συνάρτηση το rel="lightbox" να μπαίνει μόνο σε όσα links περικλείουν εικόνες img δηλαδή μόνο για τα

Κώδικας: Επιλογή όλων

<a href="picture_big.jpg"><img src="picture.jpg" alt="εικόνα" title="εικόνα" border=0 ></a>
και αντίστοιχα να μην εφαρμόζεται σε όσα links δεν περικλείουν εικόνες δηλαδή για όλα τα άλλα όπως τα

Κώδικας: Επιλογή όλων

<a href="leuko.html">Λευκό</a>
<a href="galazio.html">Γαλάζιο</a>
<a href="roz">Ρόζ</a> 
Ερώτηση λοιπόν, πως θα το κάνουμε αυτό ;;;

vevhlos
Δημοσιεύσεις: 55
Εγγραφή: 01 Μαρ 2008 15:35

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από vevhlos » 25 Δεκ 2013 12:43

Κώδικας: Επιλογή όλων

if &#40;strpos&#40;$dedomena, '<img '&#41; !== FALSE&#41;
&#123;
    $dedomena = str_replace&#40;'<a ', '<a rel="lightbox" ', $dedomena&#41;;
&#125;

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από geomagas » 25 Δεκ 2013 15:35

Κι ας υποθέσουμε ότι

Κώδικας: Επιλογή όλων

$dedomena="<img src='img.png' /><a rel='somerel'>Just a text link</a>";

vevhlos
Δημοσιεύσεις: 55
Εγγραφή: 01 Μαρ 2008 15:35

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από vevhlos » 25 Δεκ 2013 15:45

Ankov έγραψε:... Η μεταβλητή μου αυτή περιέχει κείμενο, links και εικόνες στη μορφή

Κώδικας: Επιλογή όλων

<a href="picture_big.jpg"><img src="picture.jpg" alt="εικόνα" title="εικόνα" border=0 ></a>
@geomagas Θεωρώ δεδομένο το άνωθεν.

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από geomagas » 25 Δεκ 2013 19:16

Δεν διαφωνώ, αλλά το "άνωθεν" υπονοεί ότι υπάρχουν links αυτής της μορφής.
Δεν αποκλείει να υπάρχουν και links άλλης μορφής, παρόμοιας με αυτήν που παρέθεσα. Και τότε θα γίνει μπάχαλο...

Εννοείται ότι αν ο Ankov είναι οκ με τη λύση σου, η διαφωνία μου περισσεύει :)

vevhlos
Δημοσιεύσεις: 55
Εγγραφή: 01 Μαρ 2008 15:35

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από vevhlos » 25 Δεκ 2013 20:32

Έχεις απόλυτο δίκιο. Εξ' αρχής το να αποθηκέυει την HTML στη βάση (για αυτό που ψηλιάζομαι πως θέλει να κάνει), αντί να την χτίζει on the fly κατά το request - έχοντας στην βάση μόνον το filename και τα λοιπά metadata της εικόνας - είναι κακή πρακτική. Και το πρόβλημα που καλείται να λύσει το παρών thread είναι υποπροϊόν αυτού του λάθους.

Μιάς όμως και είναι που είναι έτσι τα πράγματα, νομίζω μια λύση τύπου code and pray (σαν αυτή που έγραψα παραπάνω) θα λύσει κουτσά στραβά το πρόβλημα του παιδιού, χωρίς να χρειαστεί να τον μπλέξει με τον εφιάλτη που λέγεται regular expressions, μιας και μου φαίνεται πως είναι αρχάριος.

Webmate
Δημοσιεύσεις: 98
Εγγραφή: 21 Αύγ 2012 01:18
Τοποθεσία: Καβάλα
Επικοινωνία:

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από Webmate » 25 Δεκ 2013 21:04

το προβλημά σου λύνεται με jquery καλύτερα από php νομίζω δεν θέλει παραπάνω από 7 8 γραμμές jquery..

Ankov
Δημοσιεύσεις: 17
Εγγραφή: 20 Δεκ 2013 02:52

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από Ankov » 26 Δεκ 2013 00:48

Ευχαριστώ vevhlos αλλά geomagas εσύ ποια καλύτερη λύση θα πρότεινες ; Κάτι με regular expresions να σκεφτώ ;
Webmate έγραψε:το προβλημά σου λύνεται με jquery καλύτερα από php νομίζω δεν θέλει παραπάνω από 7 8 γραμμές jquery..
Αυτό δεν πέρασε κάν από το νού μου ! Πως μπορεί να γίνει κάτι τέτοιο με jquery ;

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από geomagas » 26 Δεκ 2013 01:13

Κάποιος HTML/XML parser πιστεύω θα σου έδινε πιο "καθαρές" λύσεις. Δες πχ αυτό
Πάντα για server-side...

Ankov
Δημοσιεύσεις: 17
Εγγραφή: 20 Δεκ 2013 02:52

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από Ankov » 26 Δεκ 2013 01:29

Εμένα μου είναι δυσανάγνωστο το php.net μάλλον επειδή είμαι άσχετη ! Για parser δεν το είχα σκεφτεί νόμιζα ότι είναι μόνο για τις τεχνολογίες rss.. μπορείς να δώσεις ένα απλό παράδειγμα σχετικό με την περίπτωση μου ;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από korgr » 26 Δεκ 2013 09:21

Κάτι τέτοιο σε jQuery δεν σου κάνει;

Κώδικας: Επιλογή όλων

jQuery&#40;&#41;.ready&#40;function&#40;&#41;&#123;
	$&#40;'a img'&#41;.each&#40;function&#40;&#41;&#123;
		$&#40;this&#41;.parent&#40;&#41;.attr&#40;'rel', 'lightbox'&#41;;
	&#125;&#41;;
&#125;&#41;;

Webmate
Δημοσιεύσεις: 98
Εγγραφή: 21 Αύγ 2012 01:18
Τοποθεσία: Καβάλα
Επικοινωνία:

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από Webmate » 26 Δεκ 2013 13:24

Δεν μπορώ να καταλάβω γιατί να μην το κάνεις browser side και να το κάνεις server side , πλέον το 99% των browser έχουνε enabled τη javascript + οτι δεν πρόκειτε για κάποιο σοβαρό πρόβλημα ασφάλειας που πρέπει να επιλυθεί.

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από geomagas » 27 Δεκ 2013 00:06

Διότι δεν χρειάζεται.

Οτιδήποτε είναι γνωστό και σταθερό εκ των προτέρων, είναι πιο λογικό να κατασκευάζεται στον server αντί να "πετάμε το μπαλάκι" στον browser.

Και βέβαια εκτός από τους browsers υπάρχουν κι άλλοι agents που θα έχουν πρόσβαση στη σελίδα, και δεν θα υποστηρίζουν javascript: curl, wget, lynx και *bot είναι μερικά παραδείγματα.
Επίσης, οι mail clients, αν υποθέσουμε ότι κάποια στιγμή η ίδια διαδικασία θα παράγει html για αποστολή με mail.

Κάποιος που σχεδιάζει μία εφαρμογή θα πρέπει να λάβει οπωσδήποτε υπόψιν του προγράμματα που δεν είναι κατ' ανάγκη browsers.

Ankov
Δημοσιεύσεις: 17
Εγγραφή: 20 Δεκ 2013 02:52

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από Ankov » 27 Δεκ 2013 02:15

korgr έγραψε:Κάτι τέτοιο σε jQuery δεν σου κάνει;

Κώδικας: Επιλογή όλων

jQuery&#40;&#41;.ready&#40;function&#40;&#41;&#123;
	$&#40;'a img'&#41;.each&#40;function&#40;&#41;&#123;
		$&#40;this&#41;.parent&#40;&#41;.attr&#40;'rel', 'lightbox'&#41;;
	&#125;&#41;;
&#125;&#41;;
Αυτό από μόνο του θα μετατρέψει κάθε img εικόνα στη σελίδα μου αυτόματα σε εικόνα που θα ανοίγει με το lightbox ; Καλό, αν και θα προτιμούσα μια php λύση για τους λόγους που ανέφερε o geomagas.

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1948
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

Πως θα βάζω rel="lightbox" μόνο στα links που περικλείουν εικόνες και όχι σε όλα τα άλλα ;

Δημοσίευση από Alice_Cooper » 27 Δεκ 2013 09:29

xmmm edo ...
http://www.freestuff.gr/forums/viewtopi ... 996#597996
se php sou apantisa
to kaneis prin ta steileis sthn db kai elikse

afto pou edose o korgr den kanei kathe img alla kathe img pou einai link ;)
vasika afto einai apantish sto arxiko sou erotima ....
kai afto pou esteila ego sto tora :p
Τελευταία επεξεργασία από το μέλος Alice_Cooper την 27 Δεκ 2013 09:37, έχει επεξεργασθεί 1 φορά συνολικά.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες