PHP integracja XML

0

Witam,

mam sklep internetowy z produktami których nazwa jest czcionka drukowaną, pytanie? czy istnieje jakaż zmienna która przy generowaniu pliku XML kod napisany w PHP będzie zmieniać na pierwsza literę duża a resztę małymi?
Będę wdzięczny za pomoc

Pozdrawiam

0

dodam że plik XML do sklepu jest pobierany z innego sklepu i już z takimi nazwami, teraz potrzebuje ze swojego sklepu wygenerować taki plik w postaci xml, Robi mi to automat napisany w PHP i generuje link z xml

0

Użyj funkcji ucfirst() w kodzie PHP, dla zmiennych, które chcesz zmienić.

0

np tak:

$temp = 'DRUKOWANE LITERY';
echo ucfirst(strtolower($temp));  //wynik: Drukowane litery
0

Jeżeli nazwy rozpoczynają się np. od polskich liter, ucfirst prawdopodobnie polegnie (zrobi krzaka zamiast pierwszej litery). Musisz wtedy napisać coś własnego na wzór mb_ucfirst, np. coś takiego: https://stackoverflow.com/a/2518021/5497893

0
Mjuzik napisał(a):

Użyj funkcji ucfirst() w kodzie PHP, dla zmiennych, które chcesz zmienić.

dzięki za wskazówkę lecz w pliku php dotyczący nazwy produktu mam taki wpis:

$xml->writeCdata($row['prd_name']);

0

Lub coś takiego

if( $com['comp_prod_prefix'] )
			$row['prod_name'] = $com['comp_prod_prefix'].' '.$row['prod_name'];

		if( $com['comp_prod_sufix'] )
			$row['prod_name'] .= ' '.$com['comp_prod_sufix'];

		if( $row['prod_name_auctions'] )
			$row['prod_name'] = $row['prod_name_auctions'];

0

Z poniższego kodu generuje się oferta XML

case 'allani':
            {
                $xml->startElement('offer');
                    $xml->writeElement('id', $row['prod_id']);
                    $xml->writeElement('ids', $row['prod_symbol']);
                    $xml->startElement('url');
                        $xml->writeCData($link);
                    $xml->endElement();
                    $xml->writeElement('price', $price);
                    $xml->writeElement('Netto', $price_netto);
						$xml->writeElement('oldprice', $oldprice);
                    $xml->startElement('brand');
                        $xml->writeCdata($row['prd_name']);
                    $xml->endElement();
                    $xml->writeElement('ilość', $row['prod_amount']);
                    $xml->writeElement('waga', $row['prod_weight']);
                    $xml->writeElement('barcode', $row['prod_barcode']);
                    $xml->writeElement('VAT', $row['tax_value']);
                    $xml->startElement('cat');
                        $xml->writeCData($xml->writeCData($row['cat_path']));
                    $xml->endElement();
                    $xml->startElement('name');
                        $xml->writeCData($row['prod_name']);
                    $xml->endElement();
                    if ( $image_urlenco )
					{
                    $xml->startElement('image');
						$xml->writeCData($image_urlenco);
						$xml->endElement();
					}
                    $xml->startElement('imgs');
                        $xml->startElement('img');
                            $xml->writeAttribute('default', 'true');
                            $xml->writeCdata($image);
						$xml->endElement();
                            if ( !empty($additional_images[$row['prod_id']]) )
                            {
                                foreach ( $additional_images[$row['prod_id']] as $img )
                                {
                                    $xml->startElement('img');
                                        $xml->writeCData($img);
                                    $xml->endElement();
                                }
                            }
                    $xml->endElement();
                    if ( !empty($row['rozmiar']) )
                    {
                        $xml->startElement('sizes');
                            $xml->writeCData(implode(';', $row['rozmiar']));
                        $xml->endElement();
                    }
                    $xml->startElement('desc');
                        $xml->writeCData($opis);
                    $xml->endElement();
                    $xml->startElement('gender');
                        $xml->writeCData( !empty($row['płeć']) ? current($row['płeć']) : '');
                    $xml->endElement();
                    if ( !empty($row['kolor']) )
                    {
                        $xml->startElement('attrs');
                            $xml->startElement('attr');
                                $xml->writeAttribute('name', 'Kolor');
                                $xml->writeCData(implode(';', $row['kolor']));
                            $xml->endElement();
                        $xml->endElement();
                    }
                $xml->endElement();
                break;
            }

0

Musisz wpisać ucfirst tam gdzie generujesz nazwę produktu:

 $xml->writeCdata(ucfirst($row['prd_name']));
0
hapertown napisał(a):

Musisz wpisać ucfirst tam gdzie generujesz nazwę produktu:

 $xml->writeCdata(ucfirst($row['prd_name']));

ok dziękuje przetestuje

0
hapertown napisał(a):

Musisz wpisać ucfirst tam gdzie generujesz nazwę produktu:

 $xml->writeCdata(ucfirst($row['prd_name']));

Witam,

niestety nie zadziałało z pomniejszeniem liter jedynie wycięło kawałek nazwy czyli powinno być SWITCH NETIS 5-PORT ST3105S 100MB
a zostało samo NETIS trochę dziwne.

0
Wesoły Polityk napisał(a):
hapertown napisał(a):

Musisz wpisać ucfirst tam gdzie generujesz nazwę produktu:

 $xml->writeCdata(ucfirst($row['prd_name']));

Witam,

niestety nie zadziałało z pomniejszeniem liter jedynie wycięło kawałek nazwy czyli powinno być SWITCH NETIS 5-PORT ST3105S 100MB
a zostało samo NETIS trochę dziwne.

Chyba pociągło z nazwy producenta czyli nie działa ta funkcja

0
Wesoły Polityk napisał(a):
Wesoły Polityk napisał(a):
hapertown napisał(a):

Musisz wpisać ucfirst tam gdzie generujesz nazwę produktu:

 $xml->writeCdata(ucfirst($row['prd_name']));

Witam,

niestety nie zadziałało z pomniejszeniem liter jedynie wycięło kawałek nazwy czyli powinno być SWITCH NETIS 5-PORT ST3105S 100MB
a zostało samo NETIS trochę dziwne.

Chyba pociągło z nazwy producenta czyli nie działa ta funkcja

Tak jak myślałem nie pobiera nazwy po dodaniu tej funkcji wycięło cały tekst

0

No to musisz pomału zdebugować w czym problem.
Jeżeli masz na wejściu duże litery to musisz zrobić najpierw przemalowanie na małe, tj:

ucfirst(strtolower($row['prd_name']));

W/w funkcja nie wycina znaków - tylko je podmienia na małe/duże. Jeżeli masz inne wyjście niż oczekujesz, tzn. że albo na wejściu to dostajesz co masz na wyjściu, albo w XMLu coś źle Ci się zapisuje. Sprawdź to krok po kroku.

0
hapertown napisał(a):

No to musisz pomału zdebugować w czym problem.
Jeżeli masz na wejściu duże litery to musisz zrobić najpierw przemalowanie na małe, tj:

ucfirst(strtolower($row['prd_name']));

W/w funkcja nie wycina znaków - tylko je podmienia na małe/duże. Jeżeli masz inne wyjście niż oczekujesz, tzn. że albo na wejściu to dostajesz co masz na wyjściu, albo w XMLu coś źle Ci się zapisuje. Sprawdź to krok po kroku.

Witam,

niestety nie zadziałało to po dodaniu "strtolower" nie chce się w ogóle generować plik xml

0
Wesoły Polityk napisał(a):
hapertown napisał(a):

No to musisz pomału zdebugować w czym problem.
Jeżeli masz na wejściu duże litery to musisz zrobić najpierw przemalowanie na małe, tj:

ucfirst(strtolower($row['prd_name']));

W/w funkcja nie wycina znaków - tylko je podmienia na małe/duże. Jeżeli masz inne wyjście niż oczekujesz, tzn. że albo na wejściu to dostajesz co masz na wyjściu, albo w XMLu coś źle Ci się zapisuje. Sprawdź to krok po kroku.

Witam,

niestety nie zadziałało to po dodaniu "strtolower" nie chce się w ogóle generować plik xml

potrzebuje żeby działało to na wyjściu czyli pobieram plik xml który dostaje z innego sklepu dodaje do swojego sklepu po czym tworzona jest oferta z dużymi literami po czy chce wygenerować ze swojego sklepu ofertę xml z małymi literami najlepiej żeby zaczynało od dużej

0

To debuguj małymi krokami - może wpierw zobacz co wypluje Ci samo ```
$row['prd_name']

0
hapertown napisał(a):

To debuguj małymi krokami - może wpierw zobacz co wypluje Ci samo ```
$row['prd_name']

ok znalazłem byka była mała literówka zamiast prd miało byc prod :)
dodałem to tak jak poniżej lecz nic to nie zmienia dalej są dużymi literami napisane:

KOD:

$xml->startElement('name');
                        $xml->writeCData(ucfirst(strtolower($row['prod_name'])));
                    $xml->endElement();

WYNIK:

<name><![CDATA[ZASILACZ SUNNY 15V 1,6A]]></name>
0
Wesoły Polityk napisał(a):
hapertown napisał(a):

To debuguj małymi krokami - może wpierw zobacz co wypluje Ci samo ```
$row['prd_name']

ok znalazłem byka była mała literówka zamiast prd miało byc prod :)
dodałem to tak jak poniżej lecz nic to nie zmienia dalej są dużymi literami napisane:

KOD:

$xml->startElement('name');
                        $xml->writeCData(ucfirst(strtolower($row['prod_name'])));
                    $xml->endElement();

WYNIK:

<name><![CDATA[ZASILACZ SUNNY 15V 1,6A]]></name>

Dziękuje za pomoc teraz wszystko juz działa po prostu się nie odświeżyło jeszcze raz dziękuje :)

0
Wesoły Polityk napisał(a):
Wesoły Polityk napisał(a):
hapertown napisał(a):

To debuguj małymi krokami - może wpierw zobacz co wypluje Ci samo ```
$row['prd_name']

ok znalazłem byka była mała literówka zamiast prd miało byc prod :)
dodałem to tak jak poniżej lecz nic to nie zmienia dalej są dużymi literami napisane:

KOD:

$xml->startElement('name');
                        $xml->writeCData(ucfirst(strtolower($row['prod_name'])));
                    $xml->endElement();

WYNIK:

<name><![CDATA[ZASILACZ SUNNY 15V 1,6A]]></name>

Dziękuje za pomoc teraz wszystko juz działa po prostu się nie odświeżyło jeszcze raz dziękuje :)

zauważyłem jeszcze jedną rzecz ze jak jest jakiś polski znak to mam dużą literę czyli coś takiego np: taŚma

0

Zamiast

strtolower()

spróbuj użyć

mb_strtolower($str, 'UTF-8')
0
hapertown napisał(a):

Zamiast

strtolower()

spróbuj użyć

mb_strtolower($str, 'UTF-8')

a jak to tu dodać?

$xml->writeCData(ucfirst(strtolower($row['prod_name'])));
0

np. tak.

$xml->writeCData(ucfirst(mb_strtolower($row['prod_name'], 'UTF-8')));
0
Chory Kura napisał(a):

np. tak.

$xml->writeCData(ucfirst(mb_strtolower($row['prod_name'], 'UTF-8')));

ok dziękuje za pomoc pozdrawiam :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1