PHP substing rewrite and explode

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

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

Απάντηση
urahara
Δημοσιεύσεις: 149
Εγγραφή: 11 Δεκ 2011 22:53
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από urahara » 26 Φεβ 2017 17:28

Καλησπέρα σας,

έχω το εξής πρόβλημα: έχω ένα string που περιέχει μεγέθη ρούχων χωρισμένα με κόμμα. Αρχικά θέλω να μετονομάσω τα ονόματα αυτά και μετά να χωρίσω το string σε όρους όποτε βρίσκει κόμμα. Για τη μετονομασία χρησιμοποιώ αυτό το function και δουλεύει:

<php
function attribute($data){
$a=array(
"substring1"=>"substring1 overwritten",
"substring2"=>"substring2 overwritten",
);
return isset ( $a[ $data ] ) ? $a[ $data ] : $data;
} ?>

Μπορεί κάποιος να μου πει πως να χωρίσω σε κάθε κόμμα το προκύπτον string; Ευχαριστώ


urahara
Δημοσιεύσεις: 149
Εγγραφή: 11 Δεκ 2011 22:53
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από urahara » 11 Μαρ 2017 12:10

korgr ευχαριστώ, το έχω βρει το λινκ που μου έστειλες αλλά είμαι σχετικά νέος στην php και έχω δοκιμάσει κάποιες ενσωμματώσεις αλλά δεν μου πετυχαίνουν.. εσύ πως θα το εφάρμοζες στον παραπάνω κώδικα που σου παρέθεσα; Ευχαριστώ

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από alou » 11 Μαρ 2017 18:08

Δείξε ένα πραγματικό κομμάτι από αυτό που χρησιμοποιείς να σου πούμε, το παραπάνω δε βγάζει κανένα νόημα σε σχέση με το ζητούμενό σου,

Η explode ζητάει 2 πράγματα: που θα σπάσει το string και το ίδιο το string. Δηλαδή, αν θες να σπάσεις το "1,ενα,φου,μπαρ,καφε" θα πεις

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

explode&#40;',',  "1,ενα,φου,μπαρ,καφε"&#41;
και θα προκύψει το string χωρισμένο σε array όπου υπήρχε κόμα

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

array&#40;5&#41; &#123;
  &#91;0&#93;=>
  string&#40;1&#41; "1"
  &#91;1&#93;=>
  string&#40;6&#41; "ενα"
  &#91;2&#93;=>
  string&#40;6&#41; "φου"
  &#91;3&#93;=>
  string&#40;8&#41; "μπαρ"
  &#91;4&#93;=>
  string&#40;8&#41; "καφε"
&#125;
Προσπαθώντας να φανταστώ, το $a περιέχει strings με μεγέθη διαφόρων χαρακτηριστικών και το $data προσδιορίζει το χαρακτηριστικό? Αν ναί, πειραματίσου με κάτι τέτοιο:

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

function attribute&#40;$data&#41;&#123; 
	$a=array&#40; 
		"color"=>"black,white,green", 
		"shoesize"=>"36,37,38",
		"tshirtsize"=>"s,m,l,xl"
	&#41;; 
	return isset &#40; $a&#91; $data &#93; &#41; ? explode&#40;',',$a&#91; $data &#93;&#41; &#58; $data; 
&#125;

όπου αυτό θα είχε τέτοιο output:

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

var_dump&#40;attribute&#40;'color'&#41;&#41;;


array&#40;3&#41; &#123;
  &#91;0&#93;=>
  string&#40;5&#41; "black"
  &#91;1&#93;=>
  string&#40;5&#41; "white"
  &#91;2&#93;=>
  string&#40;5&#41; "green"
&#125;

urahara
Δημοσιεύσεις: 149
Εγγραφή: 11 Δεκ 2011 22:53
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από urahara » 11 Μαρ 2017 19:22

ευχαριστώ.. Νομίζω κατάλαβες αυτό που ζήταγα.. Το explode να το καλέσω μόνο στο $a[ $data] ή και στο τελευταίο $data ? Σου παραθέτω και ένα κομμάτι με αυτό ακριβώς που προσπαθώ..

<?php
function size($data) {
$map= array (
"-"=>"/",
"1"=>"S",
"10/M"=>"M",
"12/L"=>"L",
"34"=>"XS",
"34/XS"=>"XS",
"36"=>"S",
"38"=>"M",
"38/M"=>"M",
"4/S"=>"S",
"40"=>"L",
"40/L"=>"L",
"42"=>"XL",
"42/XL"=>"XL",
"44"=>"2XL",
"44/2XL"=>"2XL",
"6/M"=>"M",
);
return isset( $map[ $data ] ) ? $map[ $data ] : $data;
}
?>

Θέλω να μετονομάσω μεγέθη που τραβάω από άλλες πηγές και επειδή βρίσκονται σε xml αρχείο σε strings (όταν έχουν πολλά διαθέσιμα μεγέθη) να χωρίσω και τα strings όπου βλέπει κόμμα.. Αν δεν έχω θέσει μετονομασία (δηλαδή αν η ονομασία της εξωτερικής πηγής συμπίπτει) θέλω απλά να χωρίζει το περιεχόμενο του string όπου βλέπει κόμμα.. Ευχαριστώ

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από alou » 11 Μαρ 2017 21:50

Θεωρητικά ναι θα ήταν σωστό κάτι τέτοιο

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

function size&#40;$data&#41; &#123; 
	$map= array &#40; 
		...
	&#41;;

	$sizes = isset&#40; $map&#91; $data &#93;&#41; ? $map&#91; $data &#93; &#58; $data;
	
	return explode&#40;',', $sizes&#41;;
&#125; 
Εξαρτάται όμως από το input σου, στην περίπτωση που καλείς size("42/XL") τι νόημα έχει να κάνεις explode το $map["42/XL"] για παράδειγμα? θα σου επιστρέψει ένα array που θα περιέχει μόνο το XL, δε νομίζω πως αυτό είναι το ζητούμενο.

Αν το $data είναι string που περιέχει αυτά που θες να αλλάξεις, τότε θα πρέπει να κάνεις αυτό explode και να φτιάξεις ένα νέο array με το maping, κάπως έτσι

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


function size&#40;$data&#41; &#123;
	
	$map= array &#40; 
		"-"=>"/", 
		"1"=>"S", 
		"10/M"=>"M", 
		"12/L"=>"L", 
		"34"=>"XS", 
		"34/XS"=>"XS", 
		"36"=>"S", 
		"38"=>"M", 
		"38/M"=>"M", 
		"4/S"=>"S", 
		"40"=>"L", 
		"40/L"=>"L", 
		"42"=>"XL", 
		"42/XL"=>"XL", 
		"44"=>"2XL", 
		"44/2XL"=>"2XL", 
		"6/M"=>"M", 
	&#41;;

	$dataAr = explode&#40;',', $data&#41;;
	$sizes = &#91;&#93;;
	foreach &#40;$dataAr as $key => $value&#41; &#123;
		$sizes&#91;&#93; = isset&#40; $map&#91; $value &#93;&#41; ? $map&#91; $value &#93; &#58; $value;
	&#125;
	
	return $sizes;
&#125; 


urahara
Δημοσιεύσεις: 149
Εγγραφή: 11 Δεκ 2011 22:53
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από urahara » 12 Μαρ 2017 00:14

Ευχαριστώ πολύ! Ναι το input μου είναι string με διάφορα μεγέθη.. άρα χρησιμοποιώ τον τελευταίο κώδικα που μου έδωσες.. δεν κατάλαβα καλά πιο είναι το λάθος στον πρώτο κώδικα που είπες πως θα ήταν θεωρητικά σωστός και με ενδιαφέρει γιατί νομίζω το δοκίμασα αυτό το σενάριο και μου επέστρεψε απλά τη λέξη array

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από alou » 12 Μαρ 2017 12:08

Είπα θεωρητικά γιατί δεν ήξερα τι input έχεις και ρώταγες αν πρέπει να κάνεις explode και το $data, δεν έχει νόημα έτσι όπως το περιγράφεις όμως οπότε κράτα μόνο το τελευταίο.

urahara
Δημοσιεύσεις: 149
Εγγραφή: 11 Δεκ 2011 22:53
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από urahara » 12 Μαρ 2017 14:34

alou έκανα αυτό που μου είπες με το τελευταίο script και μου επιστρέφει πάλι μόνο τη λέξη array

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από alou » 12 Μαρ 2017 14:47

Στον κώδικά σου, πριν καλέσεις το size($data) κάνε ένα var_dump($data) και πες τι βλέπεις, στα τυφλά κάτι παραπάνω δε γίνεται να σου πω και ήδη ότι έχω κάνει ήθελε πολύ φαντασία για να συμπεράνω αυτά που δεν λες.

urahara
Δημοσιεύσεις: 149
Εγγραφή: 11 Δεκ 2011 22:53
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από urahara » 12 Μαρ 2017 14:53

Αυτός είναι όλος ο κώδικας.. τι άλλο να πω; Έχω xml αρχείο με strings με μεγέθη χωρισμένα με , . Θέλω να μετονομάσω τα μεγέθη μέσα στο string και στη συνέχεια να τα διαχωρίσω ώστε να μην καταχωρούνται ως strings στα product attributes. To κάλεσμα δεν το κάνω με php αλλά με shortcode τύπου [function({data})] μέσα από plugin στο WP. Αυτά είναι όλα. Άρα το vardump που να το βάλω;

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από alou » 12 Μαρ 2017 17:10

Δεν ασχολούμαι με wordpress και δεν μπορώ να σου πω πιο συγκεκριμένα κάτι, θα πρέπει να καταλάβεις και εσυ τι γίνεται και να το ψάξεις μόνος σου λίγο παραπάνω.

urahara
Δημοσιεύσεις: 149
Εγγραφή: 11 Δεκ 2011 22:53
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από urahara » 13 Μαρ 2017 02:21

ενημερώνω απλά πως το βρήκα λογικά δεν δούλευε γιατί ουσιαστικά εκχωρούσες array σε array?.. στον κώδικα που μου παρέθεσες έκανα την εξής αλλαγή:

function size($data) {
$map= array (
"-"=>"/",
"1"=>"S",
"10/M"=>"M",
"12/L"=>"L",
"34"=>"XS",
"34/XS"=>"XS",
"36"=>"S",
"38"=>"M",
"38/M"=>"M",
"4/S"=>"S",
"40"=>"L",
"40/L"=>"L",
"42"=>"XL",
"42/XL"=>"XL",
"44"=>"2XL",
"44/2XL"=>"2XL",
"6/M"=>"M",
);
$dataAr = explode(',', $data);
$sizes = [];
foreach ($dataAr as $key => $value) {
return isset( $map[ $value ]) ? $map[ $value ] : $value;
}
}

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από alou » 13 Μαρ 2017 09:51

Έφτιαχνα ένα  array και το επέστρεφα, εσύ είσαι σίγουρος πως το βρήκες? εδω απλά επιστρέφεις την πρώτη τιμή πριν το κόμα που θα βρεθεί στο $data.

Αυτό που παράγεται από το sizes, πως το χρησιμοποιείς μετά;

urahara
Δημοσιεύσεις: 149
Εγγραφή: 11 Δεκ 2011 22:53
Επικοινωνία:

PHP substing rewrite and explode

Δημοσίευση από urahara » 13 Μαρ 2017 13:31

το χρησιμοποιώ σε product filter.. πρέπει να έχεις δίκαιο.. άρα δουλεύει όταν εκχωρώ μόνο την πρώτη τιμή αλλά όταν πάω να το βάλω στο array όπως μου είπες απλά επιστρέφει array.. καμία ιδέα για το πως να δουλέψει τελικά;

Απάντηση

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

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

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