ForumCała strona

Nawigacja

Aktualnie online

Gości online: 3

Użytkowników online: 0

Łącznie użytkowników: 25,405
Najnowszy użytkownik: kipolas

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

Musisz zalogować się, aby móc dodać wiadomość.

Zbigniew@
18.10.2025 19:31:20
Forum nie dziala nawet bez polskich znakow.

JazOOn
16.10.2025 18:21:12
nie dziala z polskimi znakami

Zbigniew@
12.10.2025 15:20:31
Tylko dla wybranych.

JazOOn
06.10.2025 21:00:15
czy shout dziala?

hoopak
02.10.2025 10:33:17
Bleeeeee Cool

Pobierz now? wersj?
Pobierz podr?cznik
Zobacz inne oficjalne Supporty
Statystyki supportu
PHP-Fuson PL na Facebooku

RSS

Polecamy hosting SferaHost.pl

Zobacz temat

 Drukuj temat
[PHP] preg_replace - wy?awianie tekstu NIE zawieraj?cego danego s?owa (konwerter xml -> mysql)
QooBooS
Witam.
Próbuj? stworzy? konwerter, który z kodu zrobi mi zapytanie do bazy MySQL.
Mam przyk?adowo taki kod:
Pobierz kod źródłowy  Rozwiń Kod źródłowy

Jakiego wzoru u?y? dla funkcji preg_replace, by wy?owi? z kodu ca?e sekcje (od <string> do </string>) zawieraj?ce taki sam pocz?tek w <name></name>, ró?ni?ce si? ko?cówk?, nie usuwaj?c przy okazji innych?
Jak na razie napisa?em trzy linijki usuwaj?ce niepotrzebne rzeczy z kodu:
Pobierz kod źródłowy  GeSHi: PHP
  1. $co = array("<string>", "</string>", "\r\n", "\r", "\n", "\t", " ");
  2. $na_co = "";
  3. $tekst = str_replace($co, $na_co, $tekst);
Zinterpretowano w sekund: 0.019, wykorzystano GeSHi 1.0.8.10


Po przepuszczeniu przez taki "filtr" otrzymam co? takiego:
Pobierz kod źródłowy  Rozwiń Kod źródłowy

Jak na razie jest dobrze. Teraz chcia?bym, aby obok siebie znalaz?y si? wpisy z tym samym pocz?tkiem "name", czyli powy?szy przyk?ad powinien wygl?da?:
Pobierz kod źródłowy  Rozwiń Kod źródłowy

Dodatkowo, sekcja z DESC powinna by? przed Abnormal, czyli druga i trzecia sekcja powinny by? zamienione miejscami. Problem w tym, ?e nie wiadomo w jakiej kolejno?ci one wyst?puj? (nieraz Abnormal jest zupe?nie przed tym bez ko?cówki, nieraz za. To samo tyczy si? DESC).
Nast?pnie chcia?bym, aby z uporz?dkowanego kodu utworzy? zapytanie do bazy danych, które wstawia?oby wszystko po kolei do jednej tabeli w takiej formie:

Pobierz kod źródłowy  GeSHi: MySQL
  1. INSERT INTO sl_skille (`id_z_gry`, `id_z_gry_desc`, `id_z_gry_abnormal`, `name`, `nazwa`, `opis`) VALUES (id_bez_koncowki, id_desc, id_abnormal, name_bez_koncowki, body_bez_koncowki, body_desc."=====".body_abnormal), (id_bez_koncowki, id_desc, id_abnormal, name_bez_koncowki, body_bez_koncowki, body_desc."=====".body_abnormal), (...), (...);
Zinterpretowano w sekund: 0.006, wykorzystano GeSHi 1.0.8.10


Chodzi o to, aby wsadzi? odpowiednie dane do odpowiednich komórek i po??czy? DESC i Abnormal w jedno, oddzielaj?c je pi?cioma znakami równo?ci (ot tak, ?eby ?atwo mo?na by?o je oddzieli?).
By? mo?e poradzi?bym sobie sam, jednak nie wiem, jak zmusi? kompilator do wyszukania name bez ko?cówki, np. tak:
Pobierz kod źródłowy  Rozwiń Kod źródłowy

Problem w tym, ?e w tekst w nawiasach kwadratowych traktowany jest jako osobne litery, wi?c odrzuci tak?e te, które nie maj? ko?cówki, a zawieraj? podane litery.
Edytowane przez Pieka dnia 28.02.2010 16:16:55
 
W?cibski Go??
Dodany dnia 24.10.2025 20:33:04
Pan Kontekstualny

Postów: n^x
Data rejestracji: Zawsze

Polecamy hosting SferaHost.pl
IP: localhost  
SebaZ
Ten Twój kod to XML, wi?c u?yj jakiej? zabawki do parsowania XML'a Smile
Zadawanie pyta? na forum to nie jest prawo, to jest przywilej, którego ka?dy mo?e by? pozbawiony je?eli nie b?dzie umia? z niego korzysta?. Nie wymagaj wi?c natychmiastowej odpowiedzi.
 
bartek124
Pakujesz to do simplexml na przyklad i obrabiasz w tym. Bedzie na pewno szybciej, ni? bawic sie w wyrazenia regularne.
userbar_bartek124_net.png mw.gif Nie pomagam na komunikatorach oraz PW!
 
www.bartek124.net
QooBooS
Dzi?ki za podpowied?, SimpleXML wydaje si? by? prosty w u?yciu, jednak nie umiem go wykorzysta? w tej sytuacji. Rozwi?za?bym to tak:
- sortuj wszystkie elementy alfabetycznie wed?ug name (niech ju? strac?, Abnormal niech b?dzie przed DESC)
- przekonwertuj je po kolei na form? MySQL'ow? ('id', 'nazwa'... itd.) poprzez wyci?gni?cie ka?dego z tych podelementów z osobna i odpowiednie wstawienie ich w zapytanie.

Pytanie: W jaki sposób wykona? takie sortowanie? Je?li wczytam wszystkie elementy do tablicy, np. wszystkie string, to nie wiem, jak si? odwo?a? do podelementów name, by w odpowiedniej kolejno?ci ustawi? ich elementy nadrz?dne (string).

EDIT: Wymy?li?em co?. Mo?e nie jest to wydajny sposób, nie znam si?, ale dzia?a :) Chodzi o sortowanie wpisów z xmla przy u?yciu php poprzez wyodr?bnienie ich do osobnych tablic i u?ycie funkcji array_multisort();
poni?ej zamieszczam mój kod:
Pobierz kod źródłowy  GeSHi: PHP
  1. <?php
  2. header('Content-Type: text/html; charset=utf-8');
  3. $xml = simplexml_load_file("skille.xml");
  4. foreach ($xml -> string as $value)
  5. {
  6. $id&#91;&#93; = (string)$value -> id;
  7. }
  8. foreach ($xml -> string as $value)
  9. {
  10. $name&#91;&#93; = (string)$value -> name;
  11. }
  12. foreach ($xml -> string as $value)
  13. {
  14. $body&#91;&#93; = (string)$value -> body;
  15. }
  16. array_multisort($name, $id, $body);
  17. ?>
Zinterpretowano w sekund: 0.019, wykorzystano GeSHi 1.0.8.10

(&#91; i &#93; to nawiasy kwadratowe [ i ])
Teraz wystarczy foreach'em przejecha? po wszystkich elementach którejkolwiek z tablic, u?ywaj?c tego samego indeksu i zrobi? z nimi, co si? ?ywnie komu podoba (np. je wy?wietli?).
Pobierz kod źródłowy  GeSHi: PHP
  1. foreach($name as $key => $value)
  2. {
  3. echo $id&#91;$key&#93;."<br/>".$name&#91;$key&#93;."<br/>".$body&#91;$key&#93;."<br/></br>";
  4. }
Zinterpretowano w sekund: 0.033, wykorzystano GeSHi 1.0.8.10

Problem tkwi tu w kodowaniu znaków - plik jest w utf-8, nag?ówek xml'a informuje o utf-8, a i tak na stronie wychodz? krzaczki... Jak temu zaradzi??
Edytowane przez QooBooS dnia 01.03.2010 00:51:16
 
bartek124
Przegl?darka tak?e musi wiedzie?, ?e to utf8.
Pobierz kod źródłowy  Rozwiń Kod źródłowy


Na razie nie mam czasu spojrze? na skrypt, je?li znajd? chwil? to zobacze co i jak :)
userbar_bartek124_net.png mw.gif Nie pomagam na komunikatorach oraz PW!
 
www.bartek124.net
QooBooS
Zgoda, wysy?am header do przegl?darki za pomoc? php i nie dzia?a. Spróbuj? zrobi? to jako echo htmla, mo?e pomo?e. Dam zna? co wysz?o Smile

EDIT: Jednak dzia?a... Nie dzia?a?o w programie, w którym to sprawdza?em (HateML Pro). Widocznie ma ustawione inne kodowanie. W Firefoxie dzia?a bezb??dnie Smile Dzi?ki za pomys? z simplexml, tak bym si? m?czy? pewnie z kilka dni Smile
Edytowane przez QooBooS dnia 01.03.2010 18:59:03
 
Przejdź do forum:
Created by Arox Copyright (C) 2004
Copyright (C) 2004 - 2018 Ekipa PHP-Fusion.pl