Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyciąganie tekstu z pomiędzy code
Forum PHP.pl > Forum > Przedszkole
Warmix
Mam takie coś:
[code:1:afbc1c1567]test[/code:1:afbc1c1567]

Jak wyciągnąć ciąg znaków z pomiędzy code? W tym przypadku jest to 'test'.
melkorm
  1. preg_match('#\[code.*?\](.*?)\[/code.*?\]#', '[code:1:afbc1c1567]test[/code:1:afbc1c1567]', $matches);
  2. var_dump($matches);
wNogachSpisz
Przy użyciu narzędzia służącego do parsowania XML wbudowanego w jądro php.
Warmix
Tylko litery i cyfry w tym:
[code:1:afbc1c1567]
ulegają zmianie...

Stałe jest tylko:
[code:
melkorm
No i moje rozwiązanie to uwzględnia smile.gif
Warmix
Ok, działa...

Mam kolejny problem.
Gdy w zmiennej mam stały ciąg. Coś przed tym code, czy po, to normlanie działa. Problem pojawia się wtedy, gdy np. pobieram coś z bazy, jakiś rekord, a w wprowadzonej wartości są 'entery'. Wyświetla wtedy:
array(0) { }

Co zrobić?
melkorm
  1. preg_match('#\[code.*?\](.*?)\[/code.*?\]#m', '[code:1:afbc1c1567]test[/code:1:afbc1c1567]', $matches);
Warmix
Dalej to samo...:

array(0) { }
melkorm
to użyj preg_match_all .
Warmix
Takie coś:

array(2) { [0]=> array(0) { } [1]=> array(0) { } }
melkorm
To może podaj to co wyciągasz z bazy? będzie łatwiej.
Warmix
Mniej więcej coś takiego:

Cytat
[size=24:731ec5c613][color=#6699ff:731ec5c613]XX[/color:731ec5c613][/size:731ec5c613]

[code:1:731ec5c613]http://linkdostrony1.pl
http://linkdostrony2.pl
http://linkdostrony3.pl
[/code:1:731ec5c613]
jarmiar
Spróbuj wstawic po delimiterze modifikator m

Warmix
Cytat(melkorm @ 6.02.2012, 16:16:10 ) *
  1. preg_match('#\[code.*?\](.*?)\[/code.*?\]#m', '[code:1:afbc1c1567]test[/code:1:afbc1c1567]', $matches);

...
strife
  1. $c = '[size=24:731ec5c613][color=#6699ff:731ec5c613]XX[/color:731ec5c613][/size:731ec5c613]
  2.  
  3. [code:1:731ec5c613]http://linkdostrony1.pl
  4. [/code:1:731ec5c613]';
  5.  
  6.  
  7. preg_match_all('#\[code.*?\](.*?)\[\/code.*?\]#is', $c, $out);
  8.  
  9. var_dump($out);

Piwo możesz wysłać pocztą closedeyes.gif
Warmix
Ok, działa. Wyświetlam za pomocą echo $out[1][0];

A jeszcze jedno co do tego...

Mam to:
Cytat
[code:1:731ec5c613]http://linkdostrony1.pl
http://linkdostrony2.pl
http://linkdostrony3.pl
[/code:1:731ec5c613]


Każdy link jest w nowej lini..
Jak to teraz zexplodoać ($out[1][0]), żeby rozdzieliło mi te linki na każdy w nowym arrayu?
piotrooo89
  1. explode("\n", string);
Warmix
Bardzo dziwne, zrobiłem już wcześniej tak jak Ty dałeś i nie działało... A teraz działa ohmy.gif Może źle coś z pozycjami w tablicy robiłem...
piotrooo89
przypuszczam że dałeś '\n' zamiast "\n".
Warmix
Być może... sam już nie wiem.

Jeszcze jedno pytanie mam...

Mam coś takiego:
http://linkdostrony.pl/xxxxxx/xxx

Jak tym preg_matchem wyciągnąć główny adres strony?
Ważne jest to, że najlepiej by było, gdyby jeden preg_match wyciągał ten adres, który może wystąpić pod postacią:
http://linkdostrony.pl/xxxxxx/xxx
http://www.linkdostrony.pl/xxxxxx/xxx
www.linkdostrony.pl/xxxxxx/xxx
linkdostrony.pl/xxxxxx/xxx

Czyli chcę wyciągnąć 'linkdostrony.pl' (ten link będzie się zmieniał)..., z tych 4 przykładów, najlepiej tak, by jeden preg_match obejmował je wszystkie...
W razie czego mogłoby być też tak, że same nazwa by była, czyli 'linkdostrony' bez domeny.
strife
Cytat(Warmix @ 6.02.2012, 22:32:17 ) *
Być może... sam już nie wiem.

Jeszcze jedno pytanie mam...

Mam coś takiego:
http://linkdostrony.pl/xxxxxx/xxx

Jak tym preg_matchem wyciągnąć główny adres strony?
Ważne jest to, że najlepiej by było, gdyby jeden preg_match wyciągał ten adres, który może wystąpić pod postacią:
http://linkdostrony.pl/xxxxxx/xxx
http://www.linkdostrony.pl/xxxxxx/xxx
www.linkdostrony.pl/xxxxxx/xxx
linkdostrony.pl/xxxxxx/xxx

Czyli chcę wyciągnąć 'linkdostrony.pl' (ten link będzie się zmieniał)..., z tych 4 przykładów, najlepiej tak, by jeden preg_match obejmował je wszystkie...
W razie czego mogłoby być też tak, że same nazwa by była, czyli 'linkdostrony' bez domeny.

http://corpocrat.com/2009/02/28/php-how-to...tname-from-url/
Warmix
Wszystko byłoby dobrze, gdyby linki w bazie wyglądały \'normalnie\'...

Gdy link wygląda tak:
http://linkdostrony.pl
To działa dobrze...

Ale w mojej bazie, każdy link jest zapisywany mniej więcej tak:
Po 'http', dodawane są takie znaki:

(w img, bo nie da ię tych znaków napisać...)
Co zrobić?
Nie wiem, jak się stostuje tego preg_matcha, jak określić znaki itd. więc pytam biggrin.gif
piotrooo89
podaj jakieś przykłady jak masz dane przechowywane.
Warmix
Cytat(piotrooo89 @ 7.02.2012, 11:54:17 ) *
podaj jakieś przykłady jak masz dane przechowywane.


To polega na tym, że gdy jest sam link, to link wygląda 'normlanie'.
Natomiast dodają się te znaki wtedy, gdy ten link zakoduję w 'code'...
I zawsze po 'http' dodają się takie same znaki. (zawsze jest: & # 58 ; )
piotrooo89
Cytat(Warmix @ 7.02.2012, 11:59:12 ) *
To polega na tym, że gdy jest sam link, to link wygląda 'normlanie'.
Natomiast dodają się te znaki wtedy, gdy ten link zakoduję w 'code'...
I zawsze po 'http' dodają się takie same znaki. (zawsze jest: & # 58 ; )


ja nie wiem jakie to są "te" znaki, podaj kilka przykładów...
Warmix
Cytat(piotrooo89 @ 7.02.2012, 12:07:48 ) *
ja nie wiem jakie to są "te" znaki, podaj kilka przykładów...


& # 58 ;

Przecież cały czas o nich piszę... I dałem nawet fotkę...
Tylko w tym, co wyżej dałem, to bez spacji.
strife
Cytat(Warmix @ 7.02.2012, 18:02:52 ) *
& # 58 ;

Przecież cały czas o nich piszę... I dałem nawet fotkę...
Tylko w tym, co wyżej dałem, to bez spacji.

Przestań podbijać temat. Jak ktoś będzie miał ochotę to odpowie i bez tego.

Żadnej fotki nie widać, poza tym.

Jeżeli po http dodają Ci się zawsze te same znaki to przed obróbką tych linków, możesz podmienić te znaki na coś innego (zamienić te encje na odpowiadające im znaki).
Albo użyć np. http://www.php.net/manual/en/function.html...hars-decode.php (jeżeli dobrze rozumiem intencje), a potem obrabiać.

Jak forum coś wycina to zawsze możesz podać nam kod na pastebin.
Warmix
Próbowałem użyć str_replace, czy też preg_replace i niestet nie da się tych znaków podmienić (albo coś źle robię)...

Teraz screen, gdy wezmę źródło strony:


Ok, już działa.

Użyłem html_entity_decode

Mam pewnien problem.

Użyłem tego kodu z tej strony:
http://corpocrat.com/2009/02/28/php-how-to...tname-from-url/

Ale niestety brakuje tam jednego przykadu:
adreslinku.pl

Czyli gdy nie ma niczego przed adresem, to nie działa... Da się coś z tym zrobić?
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.