PHP: DOMDocument -> Προσθήκη συνδέσμου href σε όλα τα img tags

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

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

Απάντηση
Άβαταρ μέλους
lefta4klik
Δημοσιεύσεις: 191
Εγγραφή: 08 Ιαν 2013 18:51
Επικοινωνία:

PHP: DOMDocument -> Προσθήκη συνδέσμου href σε όλα τα img tags

Δημοσίευση από lefta4klik » 31 Οκτ 2014 10:47

Γεια σε όλους. καταρχήν να σας πω ότι είμαι νέος στην php.
Έχω φάει πάρα πολλές ώρες στην χρήση του domdocuemnt για να πετύχω κάτι που θέλω δηλαδή να βάλω συνδέσμους σε όλες τις ετικέτες img. Το μόνο που πέτυχα είναι να το κάνω αυτό με τον πιο κάτω κώδικα, απλά δημιουργείτε μια νέα εικόνα με τον σύνδεσμο σε αυτή ενώ εγώ θέλω να μπει το link στην ήδη υπάρχων εικόνα χωρίς την δημιουργία μιας νέας εικόνας. Είναι εφικτό να γίνει αυτό; Η τζάμπα τρώω τις ώρες μου.

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

$doc = new DOMDocument;
$doc->loadHTMLFile("html.html");
echo $doc->saveHTML();
$images = $doc->getElementsByTagName('img');
foreach ($images as $img) {
$img_link = $img->getAttribute('src');
echo "<a href='#'><img src='$img_link'/></a>";
  &#125;

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

PHP: DOMDocument -> Προσθήκη συνδέσμου href σε όλα τα img tags

Δημοσίευση από giannis17 » 01 Νοέμ 2014 14:56

το οτι γίνεται, γίνεται. Θα πρέπει να κάνεις edit πρώτα το DOMDocument και μετά να το κάνεις save και echo.

Το θέμα είναι γιατί να το κάνεις με php? Είσαι σε περιβάλλον που δεν παίζει javascript?

Αυτό που θες μπορεί να γίνει πολύ εύκολα με jQuery

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

<script>
$&#40;'document'&#41;.ready&#40;function&#40;&#41;&#123;
  $&#40;'img'&#41;.prepend&#40;'<a href="#">'&#41;;
  $&#40;'img'&#41;.append&#40;'</a>'&#41;;
&#125;&#41;;
</script>
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

Άβαταρ μέλους
lefta4klik
Δημοσιεύσεις: 191
Εγγραφή: 08 Ιαν 2013 18:51
Επικοινωνία:

PHP: DOMDocument -> Προσθήκη συνδέσμου href σε όλα τα img tags

Δημοσίευση από lefta4klik » 01 Νοέμ 2014 15:06

βασικά το προσπαθώ με php επειδή δεν έχω ιδέα από jquery
το έχω πετύχει με php κάπως έτσι αλλά μου βγάζει κάτι θεματάκια

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

$doc = new DOMDocument;
$doc->loadHTMLFile&#40;"html.html"&#41;;
$images = $doc->getElementsByTagName&#40;'img'&#41;;
foreach &#40;$images as $img&#41; &#123;
$link = $doc->createElement&#40;'a'&#41;; 
$link->setAttribute&#40;'href', '#'&#41;;
$img->parentNode->insertBefore&#40;$link, $img&#41;;
$link->appendChild&#40;$img&#41;;
  &#125;
echo $doc->saveHTML&#40;&#41;;
με τον κώδικα που μου έγραψες μπορεί να πετύχει το ίδιο πράμα;

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

PHP: DOMDocument -> Προσθήκη συνδέσμου href σε όλα τα img tags

Δημοσίευση από giannis17 » 01 Νοέμ 2014 15:18

Έπρεπε να παίζει όπως το βλέπω.

Αν βάλεις τον κώδικα που σου έδωσα στο τέλος του body σου και πριν από αυτό φορτώσεις την jQuery (αν χρησιμοποιείς έτοιμο θέμα το πιο πιθανό είναι να την φορτώνει ήδη, τσέκαρε το) θα κάνει ακριβώς το ίδιο πράγμα αλλά σε όλη την σελίδα, δηλαδή αν έχεις σε <img> το logo θα τρέξει και σε αυτό. Αν θες να το κάνεις μόνο για τα img ενός συγκεκριμένου div ας πούμε δίνεις στο div ένα id και αλλάζεις το

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

$&#40;'img&#41;
με

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

$&#40;'#id img'&#41;
ώστε να τρέξει μόνο σε αυτές.

Ο παρακάτω κώδικας σου φορτώνει την τελευταία έκδοση jQuery (η έκδοση δεν παίζει ρόλο για κάτι τόσο βασικό που θες να κάνεις)

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

<script type="text/javascript"
src="http&#58;//code.jquery.com/jquery-latest.min.js" charset="utf-8">
</script>
απλά πρέπει να έχεις τα script σου μετά την εισαγωγή της jQuery, η javascript τρέχει ανά γραμμή.
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

Άβαταρ μέλους
lefta4klik
Δημοσιεύσεις: 191
Εγγραφή: 08 Ιαν 2013 18:51
Επικοινωνία:

PHP: DOMDocument -> Προσθήκη συνδέσμου href σε όλα τα img tags

Δημοσίευση από lefta4klik » 01 Νοέμ 2014 15:22

φοβερή η jQuery! θα αρχίσω να την μαθαίνω! Ευχαριστώ πολύ φίλε!!!

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

PHP: DOMDocument -> Προσθήκη συνδέσμου href σε όλα τα img tags

Δημοσίευση από giannis17 » 01 Νοέμ 2014 15:38

Δεν κάνει τίποτα.

Η jquery αυτή τη στιγμή είναι το πιο εύχρηστο εργαλείο javascript που υπάρχει. Είναι το δραπανοκατσάβιδο ενός κοινού μάστορα. Σίγουρα μπορεί να κουβαλάει μια κασετίνα γεμάτη κατσαβίδια και τρυπάνια χειρός αλλά με 1 εργαλείο (και μερικές κεφαλές-μύτες σίγουρα) μπορεί να κάνει την ίδια δουλειά εύκολα και γρήγορα.

Προσωπικά μπορώ να πω είμαι εθισμένος στην jQuery και την χρησιμοποιώ παντού. Όταν φτάνω σε κάποιο σημείο που δεν θέλω να προδώσω τη μέθοδο μου ή υπάρχουν δεδομένα που πρέπει να τραβήξω από κάπου τότε απλά συνεχίζω με ένα $.post ή $.get (ajax request μιας γραμμής κώδικα) που τραβάνε το τελικό αποτέλεσμα από κάποιο προστατευμένο php το οποίο συνήθως βρίσκεται και έξω από το root της σελίδας μου.

Έτσι έχω δυναμικές html σελίδες (δεν χρειάζεται να είναι .php) που φορτώνουν πολύ γρήγορα και τραβάνε τα δεδομένα αφού γίνουν render, στην php αυτό είναι αρκετά δύσκολο να το πετύχεις, είτε πρέπει να έχεις σχεδιάσει το θέμα σου με τέτοιο τρόπο ώστε να κάνει render τα βασικά χωρίς την PHP είτε να παίξεις με buffer capture-release τα οποία μπορεί να προκαλέσουν και πυρηνική έκρηξη. Αλλιώς συνήθως σε ένα βαρύ php project μέχρι να φορτώσουν τα δεδομένα ο χρήστης βλέπει μια λευκή σελίδα, καθόλου καλό.
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

Άβαταρ μέλους
lefta4klik
Δημοσιεύσεις: 191
Εγγραφή: 08 Ιαν 2013 18:51
Επικοινωνία:

PHP: DOMDocument -> Προσθήκη συνδέσμου href σε όλα τα img tags

Δημοσίευση από lefta4klik » 01 Νοέμ 2014 19:58

Οι πληροφορίες σου μου είναι πολύτιμες φίλε Γιάννη. Να είσαι καλά που ασχολήθηκες με το πρόβλημα μου. Καλή συνέχεια και σου εύχομαι ότι καλύτερο σε ότι φτιάχνεις.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

PHP: DOMDocument -> Προσθήκη συνδέσμου href σε όλα τα img tags

Δημοσίευση από dva_dev » 02 Νοέμ 2014 01:12

lefta4klik έγραψε:βασικά το προσπαθώ με php επειδή δεν έχω ιδέα από jquery
το έχω πετύχει με php κάπως έτσι αλλά μου βγάζει κάτι θεματάκια

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

$doc = new DOMDocument;
$doc->loadHTMLFile&#40;"html.html"&#41;;
$images = $doc->getElementsByTagName&#40;'img'&#41;;
foreach &#40;$images as $img&#41; &#123;
$link = $doc->createElement&#40;'a'&#41;; 
$link->setAttribute&#40;'href', '#'&#41;;
$img->parentNode->insertBefore&#40;$link, $img&#41;;
$link->appendChild&#40;$img&#41;;
  &#125;
echo $doc->saveHTML&#40;&#41;;
με τον κώδικα που μου έγραψες μπορεί να πετύχει το ίδιο πράμα;
Τι θεματάκια σου βγάζει;


Απάντηση

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

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

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