Zobacz temat
|
[PHP] preg_replace - wy?awianie tekstu NIE zawieraj?cego danego s?owa (konwerter xml -> mysql)
|
|
| QooBooS |
Dodany dnia 28.02.2010 15:52:58
|
|
Przedszkolak ![]() Postów: 52 Data rejestracji: 02.06.2008 22:31 |
Witam. Próbuj? stworzy? konwerter, który z kodu zrobi mi zapytanie do bazy MySQL. Mam przyk?adowo taki kod: 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: Po przepuszczeniu przez taki "filtr" otrzymam co? takiego: 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?: 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: 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: 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 |
|
| IP: localhost | |
| SebaZ |
Dodany dnia 28.02.2010 19:05:13
|
|
Zaawansowany ![]() Postów: 1598 Pomógł: 2 Data rejestracji: 10.11.2004 22:39 |
Ten Twój kod to XML, wi?c u?yj jakiej? zabawki do parsowania XML'a
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 |
Dodany dnia 28.02.2010 20:29:24
|
|
Weteran ![]() Postów: 3264 Pomógł: 236 v7.02.06Data rejestracji: 26.05.2007 12:25 |
Pakujesz to do simplexml na przyklad i obrabiasz w tym. Bedzie na pewno szybciej, ni? bawic sie w wyrazenia regularne.
|
|
|
|
| QooBooS |
Dodany dnia 28.02.2010 22:47:34
|
|
Przedszkolak ![]() Postów: 52 Data rejestracji: 02.06.2008 22:31 |
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: ([ i ] 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?). 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 |
Dodany dnia 01.03.2010 15:11:19
|
|
Weteran ![]() Postów: 3264 Pomógł: 236 v7.02.06Data rejestracji: 26.05.2007 12:25 |
Przegl?darka tak?e musi wiedzie?, ?e to utf8. Na razie nie mam czasu spojrze? na skrypt, je?li znajd? chwil? to zobacze co i jak :) |
|
|
|
| QooBooS |
Dodany dnia 01.03.2010 15:34:22
|
|
Przedszkolak ![]() Postów: 52 Data rejestracji: 02.06.2008 22:31 |
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 ![]() 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 Dzi?ki za pomys? z simplexml, tak bym si? m?czy? pewnie z kilka dni
Edytowane przez QooBooS dnia 01.03.2010 18:59:03 |
|
|
|
| Przejdź do forum: |



















