rel="lightbox" σε όλα τα <a href=""> που περιέχουν <img> εκτός εκείνων που περιέχουν url

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

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

Απάντηση
NikosAthens
Δημοσιεύσεις: 5
Εγγραφή: 23 Μαρ 2015 15:29

rel="lightbox" σε όλα τα <a href=""> που περιέχουν <img> εκτός εκείνων που περιέχουν url

Δημοσίευση από NikosAthens » 23 Μαρ 2015 15:48

Νομίζω είμαι κοντά σαυτό που θέλω να πετύχω αλλά δεν ξέρω πως να το κάνω με php.
Ρίξτε παρακάτω μια ματιά παρακαλώ :

Θέλω να προσθέσω ένα

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

rel="lightbox"
σε κάθε

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

<a href="">
που περιλαμβάνει μια εικόνα,φώτο

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

<img>
.

Να κάνω κάθε :

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

<a href=""><img src="" alt="" title="" border="" /></a>
σε

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

<a href="" rel="lightbox"><img src="" alt="" title="" border="" /></a>
Για τούτο τον σκοπό έφτιαξα το παρακάτω σε php :

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

$addrel= $rows&#91;'article'&#93;;

 $addrel= str_replace&#40;'<br>', '<br />', $addrel&#41;;

 $addrel= str_replace&#40;'align="none"', '', $addrel&#41;;
 $addrel= str_replace&#40;'target=""', 'target="_self"', $addrel&#41;;

 $addrel2= preg_replace&#40; '~<img\s&#91;^>&#93;*\K&#40;?<!/&#41;>~', "/>", $addrel&#41;;

$addrel2= preg_replace&#40;'~<a&#40;?=&#91;^>&#93;+>\s*<img&#41;~','<a rel="lightbox"',$addrel2&#41;;

 echo $addrel2; 
Το πιο πάνω προσθέτει ένα rel="lightbox" σε κάθε εικόνα μέσα σε ένα <a href=""> όμως στην περίπτωση που το <a href=""> περιέχει ένα link σε url link δηλαδή <a href="http://www.freestuff.gr"> τότε υπάρχει πρόβλημα, καθώς φορτώνει το εφέ rel="lightbox" !

Θέλω δηλαδή όταν το <a href=""> περιέχει ένα url link και όχι μια εικόνα,φώτο τότε σαυτή τη περίπτωση να ΜΗΝ προστίθεται το rel="lightbox".

Η λύση που μπορώ να φανταστώ μια πιθανή, νομίζω θα ήταν με κάποιον τρόπο να εντοπίζουμε αν το <a href=""> περιέχει εικόνα με κάποια εκ των καταλήξεων πχ (bmp|gif|jpeg|jpg|png) τότε και μόνον τότε να μην προστίθεται το rel="lightbox" στο < a href="">.

Τι λέτε, βοηθήστε τα ξεφτέρια στη php να το φτιάξουμε κρίμα να μαι στη πηγή και να μην μπορώ να πιώ νερό !


NikosAthens
Δημοσιεύσεις: 5
Εγγραφή: 23 Μαρ 2015 15:29

rel="lightbox" σε όλα τα <a href=""> που περιέχουν <img> εκτός εκείνων που περιέχουν url

Δημοσίευση από NikosAthens » 24 Μαρ 2015 02:12

Καλύτερα με regex δεν έχω ιδέα από domdocument, εγώ πριν χρόνια εποχές της νιότης στο ΤΕΙ είχα ασχοληθεί με c & c++ από τότε δεν έκανα και πολλά έτυχε τώρα να έχω κάνει μια δυναμική σελίδα επέλεξα php που είναι κοντά στη c οπτικά και κάπως έτσι είμαι εδώ με το θέμα αυτό αφού και με τα regex εδώ που τα λέμε δεν έχω και την καλύτερη σχέση.

Εδώ που έχω φτάσει όμως με regex υποθέτω είναι μια μόνο γραμμή η αλλαγή που πρέπει να γίνει απλά γράφοντα ένα καλύτερο regex που να εντοπίζει αρχεία εικόνων στο <a href=""> αν δεν είναι αρχεία εικόνων αλλά URL links τότε να μην προστίθεται το rel="lightbox". Να προστίθεται μόνο άν το <a href=""> περιέχει εικόνα.

Κατάλαβες έτσι ;
Αν γνωρίζεις καλά php & regex δεν κρίνεις πως μια τροποποίηση του :

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

preg_replace&#40;'~<a&#40;?=&#91;^>&#93;+>\s*<img&#41;~','<a rel="lightbox"',$addrel2&#41;; 
θα έκανε αυτό που σου εξήγησα ;

NikosAthens
Δημοσιεύσεις: 5
Εγγραφή: 23 Μαρ 2015 15:29

rel="lightbox" σε όλα τα <a href=""> που περιέχουν <img> εκτός εκείνων που περιέχουν url

Δημοσίευση από NikosAthens » 24 Μαρ 2015 02:32

Μια λύση regex θέλω, δοκίμασα και αυτό αλλά δεν βλέπω διαφορά :

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

$addrel= $rows&#91;'article'&#93;;

 $addrel= str_replace&#40;'<br>', '<br />', $addrel&#41;;

 $addrel= str_replace&#40;'align="none"', '', $addrel&#41;;
 $addrel= str_replace&#40;'target=""', 'target="_self"', $addrel&#41;;

 $addrel2= preg_replace&#40; '~<img\s&#91;^>&#93;*\K&#40;?<!/&#41;>~', "/>", $addrel&#41;;

$addrel2= preg_replace&#40;'~<a&#40;?=&#91;^>&#93;+>\s*<img&#41;~','<a rel="lightbox"',$addrel2&#41;;

$pattern ="/<a&#40;.*?&#41;href=&#40;'|\"&#41;&#40;.*?&#41;.&#40;bmp|gif|jpeg|jpg|png&#41;&#40;'|\"&#41;&#40;.*?&#41;>/i";
  $replacement = '<a$1href=$2$3.$4$5 rel="lightbox" "$6>';
  $addrel2= preg_replace&#40;$pattern, $replacement, $addrel2&#41;;

 echo $addrel2; 

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

rel="lightbox" σε όλα τα <a href=""> που περιέχουν <img> εκτός εκείνων που περιέχουν url

Δημοσίευση από korgr » 24 Μαρ 2015 10:00

Από την στιγμή που θα χρησιμοποιήσεις js (lightbox), γιατί δεν το κανεις με jquery?

NikosAthens
Δημοσιεύσεις: 5
Εγγραφή: 23 Μαρ 2015 15:29

rel="lightbox" σε όλα τα <a href=""> που περιέχουν <img> εκτός εκείνων που περιέχουν url

Δημοσίευση από NikosAthens » 24 Μαρ 2015 12:18

Δεν έχω ασχοληθεί ιδιαίτερα με την jquery αν και πριν χρόνια έπαιζα κάτι λίγα με javascript πολύ πριν βγεί η jquery. Τι γίνεται με συσκευές που δεν υποστηρίζουν js ; Καλύτερα λύση με php όπως την ξεκίνησα εξάλλου εδώ που έφτασα είναι άδικο να τα παρατήσω και να πιάσω το domdocument την jquery ή ότι άλλο. Θέλω να να βρώ τη λύση με php regex και για το γαμώτο που λέμε :)

Δεν μπορείς να βελτιώσεις κάπως τον τελευταίο κώδικα που παρέθεσα ; Κοντά δεν είμαστε ;

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

rel="lightbox" σε όλα τα <a href=""> που περιέχουν <img> εκτός εκείνων που περιέχουν url

Δημοσίευση από korgr » 24 Μαρ 2015 13:50

Αν η συσκευή δεν υποστηρίζει js δεν θα σου παίξει το lightbox (ακόμα και με php λύση) :)

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

rel="lightbox" σε όλα τα <a href=""> που περιέχουν <img> εκτός εκείνων που περιέχουν url

Δημοσίευση από fafos » 24 Μαρ 2015 14:11

Tama sthn regex exeis kanei? dokimase auto:

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

 $addrel= str_replace&#40;'<br>', '<br />', $addrel&#41;;

 $addrel= str_replace&#40;'align="none"', '', $addrel&#41;;
 $addrel= str_replace&#40;'target=""', 'target="_self"', $addrel&#41;;

 $addrel2= preg_replace&#40; '~<img\s&#91;^>&#93;*\K&#40;?<!/&#41;>~', "/>", $addrel&#41;;

  $pattern ="/<a&#40;.*?&#41;href=&#40;'|\"&#41;&#40;.*?&#41;.&#40;bmp|gif|jpeg|jpg|png&#41;&#40;'|\"&#41;&#40;.*?&#41;>/i";
  $replacement = '<a$1href=$2$3.$4$5 rel="lightbox" $6>';
  $addrel2= preg_replace&#40;$pattern, $replacement, $addrel2&#41;;
echo $addrel2;
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

NikosAthens
Δημοσιεύσεις: 5
Εγγραφή: 23 Μαρ 2015 15:29

rel="lightbox" σε όλα τα <a href=""> που περιέχουν <img> εκτός εκείνων που περιέχουν url

Δημοσίευση από NikosAthens » 24 Μαρ 2015 14:54

korgr έγραψε:Αν η συσκευή δεν υποστηρίζει js δεν θα σου παίξει το lightbox (ακόμα και με php λύση)
Έχεις δίκιο λάθος μου αλλά προτιμώ php γιατί γενικότερα μπορώ να κάνω κάποιους ελέγχους στα δεδομένα που με js δεν γίνονται. Αν θέλεις γράψε και μια λύση σε jq έτσι για να δώ πως γίνεται.
fafos έγραψε:Tama sthn regex exeis kanei? dokimase auto:

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

 $addrel= str_replace&#40;'<br>', '<br />', $addrel&#41;;

 $addrel= str_replace&#40;'align="none"', '', $addrel&#41;;
 $addrel= str_replace&#40;'target=""', 'target="_self"', $addrel&#41;;

 $addrel2= preg_replace&#40; '~<img\s&#91;^>&#93;*\K&#40;?<!/&#41;>~', "/>", $addrel&#41;;

  $pattern ="/<a&#40;.*?&#41;href=&#40;'|"&#41;&#40;.*?&#41;.&#40;bmp|gif|jpeg|jpg|png&#41;&#40;'|"&#41;&#40;.*?&#41;>/i";
  $replacement = '<a$1href=$2$3.$4$5 rel="lightbox" $6>';
  $addrel2= preg_replace&#40;$pattern, $replacement, $addrel2&#41;;
echo $addrel2;
Χαχα έχεις δίκιο πρέπει να κάνω κανένα τάμα ..ρεζίλι έγινα :p ήταν μια ξεχασμένη γραμμή που παρέμενε η :

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

$addrel2= preg_replace&#40;'~<a&#40;?=&#91;^>&#93;+>\s*<img&#41;~','<a rel="lightbox"',$addrel2&#41;; 
Συγνώμη για την ταλαιπωρία !

Είχα φάει τέτοιο κόλλημα που ίσως και πάλι μόνος μου δεν θα το έπαιρνα χαμπάρι.. δεν είμαι επαγγελματίες απλά έχω ανεκπλήρωτες σπουδές σε ΤΕΙ σήμερα ασχολούμαι με κάτι εντελώς άλλο οπότε έτσι εξηγείται το ρεζιλίκι :P

Ωραίο το forum σας έχετε ενδιαφέροντα θέματα θα ξαναγράψω όποτε χρειαστώ βοήθεια !

Απάντηση

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

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

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