Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][RegExpr] niedziałające wyrażenie ;)
Forum PHP.pl > Forum > PHP
Spirit86
Witam, napisałem wyrażenie

  1. <?php
  2. $ret = '<a href="uselink.php?url=jakislink.php">link</a>';
  3.  $ret = preg_replace_callback('#<a href=[|'|"](.*)[|'|"] .+?>(.*)</a>#si', 'mojafunkcja', $ret);
  4. echo $ret;
  5. ?>


Ma ono za zadanie wyciągnięcie linków ze stringu i wrzucenie je do moja funkcja.
Do mojafunkcja chcę przekazać talbicę, gdzie pierwszym argumentem, jak sie domyslacie zapewne będzie adres pobrany z pomiędzy "" a drugim coś co jest między <a ...>TO</a>
Sęk w tym, że to wyrażenie kiedyś mi działało, ale ostanimi czasy, nie wiem czemu, może wgrałem jakąś inną wersję tego pliku przestało. Nie mam zielonego pojęcia, czemu to nie działa. Na moje skromne oko powinno winksmiley.jpg.

Pozdrawiam

próbowałem jeszcze zmienić te wyrażenie, ale nic nie pomaga, czy ktoś się orientuje dlaczego to nie działa?
n2435Sa
wszystko powinno działać, dziwne...
bendi
http://bedkowski.pl/a/php_regex/3/#reg9

Po drobnej modyfikacji otrzymujemy cos takiego (chyba dorzuce to tez do listy smile.gif)
Kod
#<a.*?href=('|")?(?(1)$1| ).*?>(.*?)</a>#si
Spirit86
  1. <?
  2. $ret = '<a href="uselink.php?url=jakislink.php">link</a>';
  3. $ret = preg_replace_callback("#<a.*?href=('|")?(?(1)$1| ).*?>(.*?)</a>#si", 'mojafunkcja', $ret);
  4. echo $ret;
  5. function mojafunkcja($ret){
  6. return $ret[0];
  7. }
  8.  
  9. ?>

ja już nie wiem co tu jest źle, zastosowałem to co napisałeś, to także nie działa, ech
bendi
Co nagle to po diable, tu jest poprawka:
  1. <?
  2. $ret = '<a href="uselink.php?url=jakislink.php">link</a>';
  3. preg_match_all("#<a.*?href=('|")?(.*?)(?(1)1| ).*?>(.*?)</a>#si", $ret, $m);
  4.  
  5. echo $ret;
  6. print_r( $m );
  7. ?>
Spirit86
no dobrze, stworzyłeś z tego tabelę, sęk w tym, że ja musze teraz troche te linki pozmieniać, a to będzie prawie niemożliwe Twoim sposobem,
chciałem zrobić funkcję, która by zamieniała

Kod
<a href="uselink.php?url=jakistam_adres">opis</a>

w
Kod
[url=http://jakistam_adres]opis[/url]

no i najlepiej, żeby użyć funkcji preg_replace_callback ze względu na to, że linki
Kod
<a href="uselink.php?url=jakistam_adres">jakistam_adres</a>
chciałem zmienić w:
Kod
jakistam_adres


A sposób jaki mi pokazałeś nie za bardzo mi tu pomoże :/

sry, że tak marudze, ale te wyrażenie jest mi niezbędne do dalszych prac winksmiley.jpg

pozdrawiam
bendi
Nie rozumiem.
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.