Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [w.r.] Wybrany ciąg znaków z wyjątkiem
Forum PHP.pl > Forum > PHP
DeyV
Chyba mam dziś jakiś zły dzień...
Nie mogę stworzyć Perl regular expression, które pobierałoby każdy ciag znaków, z wyjątkiem ciągów zawierajacych & quot; (bez spacji oczywiście)

Pomożecie?
kurtz
Cytat
Chyba mam dziś jakiś zły dzień...
Nie mogę stworzyć  Perl regular expression, które pobierałoby każdy ciag znaków, z wyjątkiem ciągów zawierajacych & quot; (bez spacji oczywiście)

Pomożecie?
$ciag = str_replace("& quot;","", $ciag);

i masz pod $ciag wszystko poza & quot; ...

pozdrawiam
i po cichu licze ze zrozumiem osochosilo ;)
DeyV
nietety, nie zrozumiałęś...

Chodziło o pobranie ciagu spełniającego jakieś warunki, np. pomiędzy dwoma "", _nie zawierającego_ & quot;
Bardzo latwo jest ustalić, by to był ciąg bez konkretnego znaku, ale jak stworzyć zapytanie nie zazwalajace na 'słowo'?
FiDO
Czyli chodzi Ci o [^A-z] tylko w wersji dla slowa? Tez sie kiedys nad tym glowilem i nie doszedlem do niczego madrego :/
KaMeLeOn
[php:1:558f60ef2f]<?php
$string = preg_replace("#"(.*?)"#", "1", $string);
?>[/php:1:558f60ef2f]
DeyV
tak, Kameleon, w tym kierunku winksmiley.jpg
Tylko jak do tego dodać to o czym napisał FiDO, czyli pobrać nie każdy ciąg, ale tylko te, które nie zawierają określonego słowa...
Teodor
to moze o to chodzi?
[php:1:94f8cf50d9]<?php
if (ereg("& quot;", $string)) {
print znaleziono; }
else {
print dupa; }
?>[/php:1:94f8cf50d9]
spenalzo
Hmm :-)
Spójrz na drugi post od góry... Poza tym to byłoby za proste chyba.
DeyV
raczej o coś w stylu
[php:1:7f24272262]<?php
$string = preg_replace("#"( Tu coś o czym nie wiem .*?)"#", "1", $string);
?>[/php:1:7f24272262]
Czyli, niestety, raczej o wyciągnięcie, a nie wykrycie, a zresztą Twoje rozwiazanie wykryje tylko ten konkretny ciąg a nie np.
Kod
test "coś tam & quot; " cos tam dalej
KaMeLeOn
Sorry, nie doczytałem dokładnie o co Ci chodzi...
Więc wyrażenie:
Kod
(.*?)

w żadnym wypadku bo .* oznacza dowolną ilość dowolnych znaków.
Jeśli dobrze zrozumiałem to chcesz pobrać text znajdujący się pomiędzy " ", który składa się tylko z liter i spacji.
[php:1:0e24d69a17]<?php
$string = preg_replace("#"([a-zA-Z ]{1,})"#", "1", $string);
?>[/php:1:0e24d69a17]
DeyV
Jeśli możesz - przeczytaj ten wątek jeszcze raz. Bo może i rzeczywiśćie ja coś źle tłumaczę, ale nie wiem, jak napisać jaśniej.

Chodzi mi o dowolny ciąg znaków, spełniający jakiś warunek (to nas nie interesuje) który NIE zawiera podanego 'słowa'- czyli kombinacji znaków - w przykładzie & quot;
kurtz
Cytat
Chodzi mi o dowolny ciąg znaków, spełniający jakiś warunek (to nas nie interesuje) który NIE zawiera podanego 'słowa'- czyli kombinacji znaków - w przykładzie & quot;
proponuje uzyc preg_grep() zeby zrobic inverta.

machanlem prosty przyklad - zobacz czy mowimy o tym samym tym razem ;)


pozdrawiam
DeyV
tak, to mi się podoba aaevil.gif
Szkoda tylko że jeszcze nie bardzo rozumiem, jak to działa, bo mój manual (wersja z 30 maja) nie podaje nic na temat flag w preg_grep().
Ale dzieki - poszukamy, poczytamy smile.gif
kurtz
Cytat
tak, to mi się podoba :twisted:  
Szkoda tylko że jeszcze nie bardzo rozumiem, jak to działa, bo mój manual (wersja z 30 maja) nie podaje nic na temat flag w preg_grep().  
Ale dzieki - poszukamy, poczytamy :)
w manualu pod preg_grep() tego nie znajdziesz ;)

znajdziesz za to w w changelogu do 4.2.0 (w polowie dlugiej listy)
no i z tego co widze w komentarzach do preg_grep()a ;)

pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.