Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> rozdzielenie wyrazów i ciągów w cudzysłowach, regexp
czachor
post 15.05.2008, 20:02:13
Post #1





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam,
mam problem... Nie daję sobie do końca rady z wyrażeniami regularnymi, im prostsze, tym ciężej mi zrobić :/ Potrzebuję wyciągnąć z danego ciągu wszystkie wyrazy (oddzielone spacjami) oraz ciągi wyrazów w cudzysłowach.

Przykład:
Kod
abc ghi "jkl mno prs" tuv "xyz"

ma zwrócić:
Kod
abc
ghi
jkl mno prs
tuv
xyz

Póki co mam coś takiego:
  1. <?php
  2. preg_match_all('%(?:["]b(?:.*?)b["]) | (?:b[^"](?:.*?)[^"]b)%is', $str, $result);
  3. ?>

który zwraca:
Kod
ghi
"jkl mno prs"

co jest oczywistym nieporozumieniem z mojej winy. Problem wydaje się banalny, ale ja leżę... Będę wdzięczny za wskazówki, co jest nie tak.


--------------------
how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free
Go to the top of the page
+Quote Post
cbagov
post 15.05.2008, 20:42:24
Post #2





Grupa: Zarejestrowani
Postów: 181
Pomógł: 18
Dołączył: 19.04.2008

Ostrzeżenie: (10%)
X----


Czasem nawet jak umiesz to ciezko
Tak na szybko sprobuj tego co ponizej, nieoptymalizowane i na chybcika ale dziala.

Daje pod $_arr[2] - tablice ciagow z cudzyslowow
a pod $_arr[4] - z pomiedzy spacji

CODE

$_text = "abc ghi \"jkl mno prs\" tuv \"xyz\" uae \"123\"";

//$_p1 = explode (...);

preg_match_all ("/(\\\"(.*?)\\\")|( ?(.*?) )|( (.*?) ?)/", $_text, $_arr);

echo "<pre>";
var_dump($_arr);
echo "/<pre>";

exit;


Explode w komentarzu dalem po to, zeby zwrocic uwage, ze czasem nie warto/nie trzeba tworzyc skomplikowanego wyrazenia, zalezy od sytuacji.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 00:16