Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Usuwanie adresu url z opisu
Forum PHP.pl > Forum > Przedszkole
motor
Ponieważ użytkownicy mają zakaz wstawiania do opisów adresów url słabo sie stosują smile.gif chciałbym je jakoś kasować czy można zrobić taką funkcję ?
w bazie mam pole $opis
tak żeby powiedzmy kasowała wszystko co zaczyna się od "http://" aż do momentu kiedy będzie spacja czyli adres się skończy

95% zaczyna się od “http://” dlatego wybrałem
HanGmaN
oczywiscie ze sie da sprawdzic i usunac adres:) w bardzo latwy sposob:) a o to moj sposob na to:

  1. <?php
  2. $string1 = strpos($a, "http://"); //1
  3. $string2 = strpos($a, "www");  //2
  4.  
  5. if ($string1 >= 0 || $string2 >= 0) { //3
  6.  echo ("zawiera nie dozwolony adres");
  7.  $a = "deleted by admin";
  8. } else {
  9.  echo ("nie zawiera");
  10. }
  11. ?>


teraz wyjasnienie punkt 1: sprawdza czy zmienna $a zawiera w sobie http:// jesli tak to pokazuje od ktorego znaku zaczyna jest, $string1 przyjmuje wartosc 0 do ilus tam jesli ktos wpisal jesli nie wpisal to przyjmuje cos innego ale co?!?! nvm jesli jest to liczba 0 do 10^10 to znacyz ze ktos uzyl to.

punkt 2: to samo co w 1 tylko szuka www.

punkt 3: if sprawdzajacy czy string1 lub string 2 zawiera niedozwolony ciag znakow.
nastepnie przypisuje zmiennej $a inna wartosc no bo w koncu jesli jest cos nie dozwolone to cza skasowac:)

pozdrawiam
motor
dzięki ale mam problem wywala mi błąd w lini

  1. <?php
  2. $string1 = strpos($a, "http://"); //1
  3. ?>


Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in

I nie wiem co grane
HanGmaN
hmm a dales $a jakas wartosc?
sprawdz to przez geta mianowicie wpisz adres:

http://adres_do_pliku/plik.php?a=wartosc+zmiennej

jak widzisz po znaku zapytania a przyjmuje wartosc "wartosc zmiennej"

sprawdz teraz:)
motor
tak tak dałem , próbowałem jak pisałeś i też to samo
HanGmaN
to nie wiem o.O u mnie dziala

sproboj jeszcze tak
  1. <?php
  2. $a = "http://adres.pl";
  3. $string1 = strpos($a, "http://"); //1
  4. $string2 = strpos($a, "www");  //2
  5.  
  6. if ($string1 >= 0 || $string2 >= 0) { //3
  7.  echo ("zawiera nie dozwolony adres<br>");
  8.  $a = "deleted by admin";
  9. } else {
  10.  echo ("nie zawiera<br>");
  11. }
  12. echo ($a);
  13. ?>

?>
motor
Po restarcie komputera u mnie też juz działa smile.gif
ta funkcja wykrywa niedozwolony adres a ja chcę go wyciągnąć i skasować

  1. <?php
  2. $a="opis opis opissssssssssss h ttp://www.adres.pl inny";
  3. ?>

chcę żeby zostało
opis opis opissssssssssss inny
Aure
  1. <?php
  2. $a = preg_replace('/http://[^s]*/', '', $a);
  3. ?>


Dla tekstów w utf-8 być może konieczne będzie wykorzystanie mb_ereg_replace() i drobna zmiana wyrażenia regularnego.
siemakuba
zajrzyj też tutaj - był poruszany dokładnie taki sam problem: Temat: regexpWyciaganie URLi
pozdr.
motor
działa ok


Ale jednak jeszcze mam problem jbo jest sporo tych adresów gdzie jest samo www.
a wtedy mój skrypt nie dział sad.gif jak to zmodyfikować ? bo mi cos nie wychodzi

  1. <?php
  2. $a = preg_replace('/www.[^s]*/', '', $a);
  3. ?>


Albo co jeśli ktoś napisze WWW.
Michasko
jeśli ktoś napisze z dużych, to zamień je na małe: strtolower" title="Zobacz w manualu php" target="_manual - chyba pomoże :-)
siemakuba
Zmodyfikowane zapytanie z posta, którego przytaczałem powyżej. Złapie adresy https://www.whatever.com, http://www.whatever.com i www.whatever.com

Kod
$html=' aaaaaaa http://to.jest.adres.com/test.html?zmienna=1 aaaaaaa http://www.wp.pl i potem jeszcze https://www.secure.com i jeszcze sam www.gazeta.pl bez protokołu podanego';
preg_match_all('/\s((?:https?:\/\/|www\.)\S*)/si', $html, $m);
print_r($m);

wynik:
Kod
Array
(
    [0] => Array
        (
            [0] =>  http://to.jest.adres.com/test.html?zmienna=1
            [1] =>  http://www.wp.pl
            [2] =>  https://www.secure.com
            [3] =>  www.gazeta.pl
        )

    [1] => Array
        (
            [0] => http://to.jest.adres.com/test.html?zmienna=1
            [1] => http://www.wp.pl
            [2] => https://www.secure.com
            [3] => www.gazeta.pl
        )

)

Wielkość liter nie ma tu znaczenia - dba o to flaga i we wzorcu.

P.S. zapisane jako code a nie php bo chochlik forumowy zamienia, usuwa i figle plata w innym przypadku.

pozdr.
motor
Dzięki 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.