Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

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

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

Απάντηση
ManosApp
Δημοσιεύσεις: 48
Εγγραφή: 19 Ιούλ 2013 22:34

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από ManosApp » 20 Ιούλ 2013 00:47

Θα ήθελα να πετύχω δυο πράγματα. Καταρχήν θέλω σε μια μεταβλητή που περιέχει κείμενο κώδικα με διάφορα tags όπως <br /> tags και άλλα να παίρνω το περιεχόμενο της και να αλλάζω τα <br> tags σε <br /> tags και τα image tags <img ...> σε <img ... />

Με λίγα λόγια θέλω να αλλάζω τα λάθος tags σε σωστά κατά τα πρότυπα w3c .Έτσι για τα <br> σκέφτηκα αυτό :

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

<?

echo str_replace&#40;"<br>","<br />", $myvariable&#41;; 


?>
Όμως πως θα κάνω κάτι παρόμοιο και για τα img tags όταν αυτά μετά το img έχουν διάφορα attributes όπως height, weight, alt, title, border και ίσως άλλα όπως rel ας πούμε ;

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

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από korgr » 20 Ιούλ 2013 08:36

Η html5 μια χαρά και σωστά τα θεωρεί τα <br> και τα <img>

ManosApp
Δημοσιεύσεις: 48
Εγγραφή: 19 Ιούλ 2013 22:34

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από ManosApp » 20 Ιούλ 2013 14:11

Δεν έχω ασχοληθεί με html5 ακόμα σε xhtml γράφω και αυτός είναι ο λόγος που θέλω να κάνω τις μετατροπές αυτές. Καμιά ιδέα ;

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

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από geomagas » 20 Ιούλ 2013 15:37

Η XHTML είναι στην ουσία XML. Δοκίμασε να φορτώσεις την HTML σου σε ένα SimpleXMLElement.
Πρόσεχε γιατί σε περίπτωση συντακτικού λάθους (όπως αυτά που ψάχνεις) πετάει exception, οπότε try...catch.

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

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από fafos » 20 Ιούλ 2013 15:55

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

preg_replace&#40;"/<img&#40;&#91;^>&#93;+&#41;&#40;?<!\/&#41;\>/is", "<img $1 />", $text&#41;;
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

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

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από geomagas » 20 Ιούλ 2013 20:14

Κι αν

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

$text="<img src='foo.jpg' alt='a->b'>"
;

ManosApp
Δημοσιεύσεις: 48
Εγγραφή: 19 Ιούλ 2013 22:34

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από ManosApp » 25 Ιούλ 2013 20:02

geomagas τι εννοείς και αν ;

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

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από geomagas » 25 Ιούλ 2013 20:49

Απευθυνόμουν στον fafos.
Αν η $text πάρει την τιμή του παραδείγματός μου, δηλαδή περιέχει τον χαρακτήρα > μέσα στο tag, ο κώδικάς του δεν δουλεύει.

ManosApp
Δημοσιεύσεις: 48
Εγγραφή: 19 Ιούλ 2013 22:34

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από ManosApp » 25 Ιούλ 2013 20:52

Ενδιαφέρον ας μας απαντήσει ο fafos λοιπόν γιαυτό. Με την απάντηση του άρχισα να ψάχνω το θέμα με τα regular expression κάτι που δεν γνώριζα ως τώρα, δύσκολο για εμένα αλλά κάποια πράγματα αρχίζω να καταλαβαίνω τώρα τα πολύ βασικά !

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

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από geomagas » 25 Ιούλ 2013 20:54

Τι να σου πω... ποτέ δεν τα συμπάθησα... ίσως δεν φτάνει το μυαλό μου μέχρι εκεί... :-?

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

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από dva_dev » 26 Ιούλ 2013 00:48

Αν θέλεις να γίνει ολοκληρωμένη δουλειά θα πρέπει να ανακαλύψεις τον τροχό από την αρχή...
ή
...να χρησιμοποιήσεις τα κατάλληλα εργαλεία.

Π.χ. αυτό:

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

<?php
$input = "<html><body>Test<br><img src='123.jpg' alt='alt->123.jpg'></body></html>";

$doc = new DOMDocument&#40;&#41;;
$doc->loadHTML&#40;$input&#41;;
$output = $doc->saveXML&#40;&#41;;
$output = substr&#40;$output, strpos&#40;$output,'<html'&#41;&#41;;
?>
<pre>
$input = "<?php echo htmlentities&#40;$input&#41;; ?>"
$output = "<?php echo htmlentities&#40;trim&#40;$output&#41;&#41;; ?>"
</pre>
Παράγει αυτό:

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

$input = "<html><body>Test<br><img src='123.jpg' alt='alt->123.jpg'></body></html>"
$output = "<html><body>Test<br/><img src="123.jpg" alt="alt-&gt;123.jpg"/></body></html>"

Ουσιαστικά όπως είπε και ο geomagas φορτώνεις html και αποθηκεύεις xml, αφήνοντας τις βιβλιοθήκες να κάνουν τη χαμαλοδουλειά. Προφανώς πρέπει να κοιτάξεις το error handling και να αφαιρέσεις τα "σκουπίδια" που προσθέτει η html και η xml και να κρατήσεις μόνο το κομμάτι που σε ενδιαφέρει (π.χ. ότι υπάρχει από το <html tag και κάτω, ή μόνο μέσα στο body).

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

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από geomagas » 26 Ιούλ 2013 08:28

DOMDocument ε;
Δεν το είχα "τρακάρει" ποτέ...
Καλό φαίνεται. Από μια γρήγορη ματιά μάλιστα, πρέπει να είναι πιο "ευρύ" από το SimpleXMLElement.

Σωστός! :idea:

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

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από dva_dev » 26 Ιούλ 2013 10:06

Κι εμένα μου φαίνεται πιο γενικό, αλλά ίσως να είναι και πιο βαρύ από το simplexml.

@ManosApp
Πάντως κάνε δοκιμές με διάφορες βιβλιοθήκες πριν πας να κάνεις κάτι από την αρχή με το χέρι και τσεκάρισε τι γίνεται με τις διάφορες κωδικοποιήσεις.

Το custom θα πρότεινα να είναι η τελευταία σου επιλογή.

Με τα αγγλικά (iso-8859-1) όλες οι βιβλιοθήκες παίζουν μια χαρά, αλλά με ελληνικά (iso-8859-7, windows-1253, utf-8, utf-16) τουλάχιστον οι 9 στις 10 έχουν πρόβλημα.

Το μεγάλο πρόβλημα για μένα στην php είναι ότι δεν έχει μπει πολιτική για default native κωδικοποίηση σε unicode και όποιος θέλει να γυρνάει σε κάποια iso-xxx, αλλά έχουν default την iso-8859-1 και μετά γίνεται κόλαση.

ManosApp έγραψε:Δεν έχω ασχοληθεί με html5 ακόμα σε xhtml γράφω και αυτός είναι ο λόγος που θέλω να κάνω τις μετατροπές αυτές. Καμιά ιδέα ;
Μιας και γράφεις xhtml μήπως θα ήταν τελικά πιο απλό και πιο γρήγορο να έκανες τις αλλαγές με το χέρι στον editor και να ξεμπέρδευες; Λογικά από τις 20/7 μέχρι σήμερα θα είχες τελειώσει.
Τελευταία επεξεργασία από το μέλος dva_dev την 26 Ιούλ 2013 11:50, έχει επεξεργασθεί 1 φορά συνολικά.

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

Πως να μετατρέψω τα λάθος tags σε σωστά με replace ;

Δημοσίευση από geomagas » 26 Ιούλ 2013 10:34

Μάλλον από τη 2η σειρά κι έπειτα απευθύνεσαι στον ManosApp (?)

Μια που ανέφερες τις κωδικοποιήσεις, νομίζω ότι επίτηδες δεν έχουν υιοθετήσει κάποιο πρότυπο σαν default. Και να σου πω, μπορώ να κατανοήσω και τους λόγους.
Και δεν το λέω επειδή δεν με δυσκολεύει κι εμένα (η iconv έχει πάει σύννεφο!!!) αλλά επειδή στοχεύουν σε πολλές διαφορετικές αρχιτεκτονικές και configurations. Άσε τις databases...
dva_dev έγραψε:Λογικά από τις 20/7 μέχρι σήμερα θα είχες τελειώσει.
Δεν ξέρουμε τον όγκο...... Άσε που μπορεί να θέλει να φτιάξει μία γενική διαδικασία για να την ξαναχρησιμοποιήσει αργότερα, ή κάτι που να του κάνει έλεγχο on-the-fly.

Απάντηση

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

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

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