Προς το περιεχόμενο

[PHP] Θέλω να πάρω το URL της πρώτης εικόνας από BBCODE κείμενο


philos

Προτεινόμενες αναρτήσεις

Γεια σας παιδιά!

Λοιπόν, στη μεταβλητή $content έχουμε ένα κείμενο το οποίο διαθέτει bbcode μορφοποίηση (δηλαδή διαθέτει tags όπως , κτλ).

Θέλω να τρέξω έναν κώδικα PHP που να δίνει σε μια άλλη μεταβλητή $imageurl, το url της πρώτης μόνο εικόνας που εντοπίζεται στο $content.

 

Προσοχή στο ότι μιλάμε για bbcode και όχι html..

 

Δοκίμασα τις οδηγίες εδώ, αλλά το script δουλεύει μόνο αν το $content ξεκινάει με μια εικόνα [ img ] blahblah [ / img ] και δηλαδή δεν προηγείται της εικόνας, άλλος κώδικας.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Ουσιαστικά μπορείς να κάνεις trim τη μεταβλητή $content μέχρι το πρώτο tag εικονας Και μετά να κάνεις trim το υπόλοιπο,

Μια πρόχειρη και πολύ απλή επιλυση:

<?php
$content ="bbcode bbcode bbcode bbcode [ img ] http://i.imgur.com/GB8p8zG.png [ / img ] bbcode bbcode bbcode bbcode";
$imageurl = str_replace(' ', '', $content);
$imageurl= strstr($imageurl, '[img]');
$imageurl = str_replace('[img]', '', $imageurl);
$imageurl = substr($imageurl, 0, strpos($imageurl, "[/"));
echo $imageurl; //http://i.imgur.com/GB8p8zG.png
?>
Επεξ/σία από vacilis
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δουλεύει μια χαρά, σε ευχαριστώ! :-)

 

Το μόνο ότι έβαλα και 2η φορά τον κώδικα, ώστε να τσεκάρει και για [ IMG ] (δηλαδή το tag με κεφαλαία). :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μπορείς να βάλεις απλώς:

<?php
$content ="bbcode bbcode bbcode bbcode [ img ] http://i.imgur.com/GB8p8zG.png [ / img ] bbcode bbcode bbcode bbcode";
$imageurl = str_replace(' ', '', $content);
$imageurl = strtolower($imageurl); //όλοι οι χαρακτήρες γίνονται πεζοί
$imageurl= strstr($imageurl, '[img]');
$imageurl = str_replace('[img]', '', $imageurl);
$imageurl = substr($imageurl, 0, strpos($imageurl, "[/"));
echo $imageurl; //http://i.imgur.com/GB8p8zG.png
?>
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Και κάτι άλλο παιδιά!

Θέλω αυτή τη φορά να πάρω τα url ΟΛΩΝ των εικόνων του $content ([ img ]url[ /img], και να τα βάλω σε έναν php array.

Πως μπορώ να το κάνω;

Έχω κάνει διάφορες δοκιμές με συναρτήσεις τύπου του να πάρεις string μεταξύ δύο άλλων string (του bbcode), αλλά χωρίς επιτυχία.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

απλως λειτουργει...

<?php
$content ="bbcode bbcode bbcode bbcode [ img ] http://i.imgur.com/GB8p8zG.png [ / img ] bbcode bbcode bbcode bbcode  [ img ] http://i.imgur.com/g3dffw.png [ / img ] bbocode bbcode  [ img ] http://www.insomnia.gr/uploads/profile/photo-thumb-272315.png [ / img ] bboce bbcode";
$imageurl = str_replace(' ', '', $content);
$imageurl = strtolower($imageurl); 
$imageurl= strstr($imageurl, '[img]');
$arr = explode("[img]", $imageurl);
foreach ($arr as &$value) {
$value = str_replace('[img]', '', $value);
$value = substr($value, 0, strpos($value, "[/img]"));
}
$imageurls = array();
foreach ($arr as $value1) {
    if (!filter_var($value1, FILTER_VALIDATE_URL) === false) {
        $imageurls[] = $value1;
    }
}
var_dump($imageurls);
?>

Output:

array(3) {
  [0]=>
  string(30) "http://i.imgur.com/gb8p8zg.png"
  [1]=>
  string(29) "http://i.imgur.com/g3dffw.png"
  [2]=>
  string(61) "http://www.insomnia.gr/uploads/profile/photo-thumb-272315.png"
}
Επεξ/σία από vacilis
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σε ευχαριστώ! :-)

Τελικά βρήκα μια πιο σύντομη λύση συνδυάζοντας διάφορα που διάβασα στο διαδίκτυο:

 preg_match_all("~\[IMG\](.+?)\[/IMG\]~", $content, $results);
 var_dump($results[1]);
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

Σε ευχαριστώ! :-)

Τελικά βρήκα μια πιο σύντομη λύση συνδυάζοντας διάφορα που διάβασα στο διαδίκτυο:

 preg_match_all("~\[IMG\](.+?)\[/IMG\]~", $content, $results);
 var_dump($results[1]);

Προφανώς πολύ καλύτερη... Δεν σκεφτηκα το preg_match_all

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Κι άλλη απορία που προσπαθώ να λύσω εδώ και ώρα!

 

Λοιπόν, έχουμε τον γνωστό μας bbcode:

[quote]text[/quote]
και

[quote=username;123]text[/quote ]
 

Το text λοιπόν μπορεί να έχει έναν δικό μου bbcode με ονομασία [mybbcode]αριθμοί[/mybbcode]

 

Όλο το κείμενο του post (χαρακτήρες, αριθμοί και κώδικας bbcode) είναι στη μεταβλητή $content.

Τι θέλω να κάνω;

Να εντοπίσω τον αριθμό "123" (ας τον πούμε $postid) που βλέπετε στο παραπάνω quote, δηλαδή τον αριθμό εκείνης της θέσης, του [ quote ] tag στο οποίο έχει εσωκλειστεί ο αντίστοιχος [mybbcode].

 

Μερικά παραδείγματα $content:

 

1. Με $content:

[quote=username;123]
lalalaallala [mybbcode]123456[/mybbcode]
bbbb cccc dddd
[mybbcode]5334[/mybbcode] haha
[/quote ]
Θα ήθελα να πάρω έναν php array με τα εξής στοιχεία:

array(123 => array('123456', '5334'))

 

2. Με $content

[quote=username;123]
lalalaallala [mybbcode]9999[/mybbcode]
bbbb cccc dddd
[quote=user2;111]
hi!
[mybbcode]5334[/mybbcode][mybbcode]8884[/mybbcode]
[/quote] haha
[/quote ]
Θα ήθελα να πάρω έναν php array με τα εξής στοιχεία:

array(

   123 => array('9999'),

   111=> array('5334', '8884')

)

 

κτλ, για οποιαδήποτε βάθος από quotes. Το θέμα είναι να πάρω το περιεχόμενο του mybbcode και να το έχω σε πίνακα με το $postid του quote στο οποίο εσωκλείεται.

 

Όποια βοήθεια ευπρόσδεκτη!

Επεξ/σία από philos
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καμιά ιδεά; :-)

 

Αν οι ζητούμενοι arrays όπως τους περιέγραψα έχουν μειονεκτήματα, ας πάρουν άλλη μορφή. Απλά θέλω τα δεδομένα σε έναν php array για να τα χρησιμοποιήσω. :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν νομίζω να είναι οι arrays το πρόβλημα. Απλά δεν πρόκειται κανείς να κάτσει να σου βγάλει όλον τον αλγόριθμο από το μηδέν.

 

Πες τι έχεις κάνει και που κόλλησες.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...