![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 19.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie i na wstępie proszę kogoś o pomoc bo nie daje rady z tymi wyrażeniami sobie rady.
Mam taki skryp CODE $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dataTemp_=str_replace(",","','",$tablicaTemp);//formatuje kod na zrozumialy dla SQL //...Jakiś kod //..... $sql = "INSERT INTO $nazwaTabeli ($tablicaTemp_) str_replace bardzo ładnie mi przerabia tablice na dane wejsciowe do bazy danych ale.... orginal "WEBER,"P329,P330,P331","HN8E ",1,KG,B22,C,0.161,F,0.028,H,0.028,,,,,,,2014-03-28" kod wyjsciowy wygląda tak 'WEBER','"P329','P330','P331"','"HN8E"','1','KG','B22','C','0.161','F','0.028','H','0.028','','','','','','','2014-03-28'; czyli prawie bo "P329,P330,P331" to wyrażenie nie może być rozbite i powinno wyglądać dak '"P329,P330,P331"' Kombinowałem na lewo i prawo z tymi wyrażeniami regularnymi ale nijak mi to nie wychodzi. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 875 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Czy 2, 3 i 4 wartość po przecinku jest zawsze stała? Jeżeli tak, to zamiast wyrażeń regularnych usuń " a potem rozbij linię.
Tak z palca na szybko. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 19.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
No własnie nie może być
"WEBER,"P329,P330,P331",..." "WEBER,"P329,P3301",...." "WEBER,"P329",...." albo jeszcze więcej wartości ale zawsze są w cudzysłowie bo mają być w jednej komórce. Ciąg zawsze znajduje się na drugim miejscu. Chodzi mi własnie o takie wyrażenie rozbij na tablice tam gdzie są przecinki ale pomiń przecinki jeśli napotkasz je w cudzysłowie Zrobiłem coś takiego co działa ale kod wygląda jak goła d**a mojej teściowej. CODE $split=explode('"',$orgin);//pobiera ciag "P329,P330,P331" $tablicaTemp = preg_replace('/".*,?1"/','@', $orgin);//zamienia tymczasowo "P329,P330,P331" na @ $split2=str_replace(',',"','",$tablicaTemp);//dodaje cudzysłowy $wynik="'".str_replace('@',$split[1],$split2)."'";//zamienia z powrotem @ na "P329,P330,P331" Teraz bez względu ile tych P*** w cudzysłowie będzie zawsze pobierze je poprawnie. Ten post edytował sasiadstar 28.02.2017, 10:43:05 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
To co tutaj masz to wyglada na zwykle wiersz csv. Uzyj wiec poprostu
http://php.net/manual/en/function.str-getcsv.php otrzymasz w wyniku tablice elementow a potem rob co ci sie zywnie podoba majac juz tablice bedzie to banalne, np implode() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 19.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
![]() O dzięki ci wielki człowieku. DZIAŁA!!!! Teraz to już z górki. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 02:13 |