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
3.06.2003, 13:15:41
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 ;)
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'?
Czyli chodzi Ci o [^A-z] tylko w wersji dla slowa? Tez sie kiedys nad tym glowilem i nie doszedlem do niczego madrego :/
KaMeLeOn
3.06.2003, 18:46:26
[php:1:558f60ef2f]<?php
$string = preg_replace("#"(.*?)"#", "1", $string);
?>[/php:1:558f60ef2f]
tak, Kameleon, w tym kierunku
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
3.06.2003, 23:02:19
to moze o to chodzi?
[php:1:94f8cf50d9]<?php
if (ereg("& quot;", $string)) {
print znaleziono; }
else {
print dupa; }
?>[/php:1:94f8cf50d9]
spenalzo
3.06.2003, 23:06:09
Hmm :-)
Spójrz na drugi post od góry... Poza tym to byłoby za proste chyba.
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
4.06.2003, 00:57:54
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]
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
4.06.2003, 09:39:04
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
tak, to mi się podoba
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
kurtz
4.06.2003, 11:27:56
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.