• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Funkcja substr() PHP

Object Storage Arubacloud
+1 głos
685 wizyt
pytanie zadane 18 czerwca 2016 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
zamknięte 9 grudnia 2016 przez hiper007
Witam

Mam w wiadomości z której chce wyciagnac jakis ciag znaków. np. link do strony.

Uzywam funkcji strpos odnajduje dane slowo czy wystepuje w wiadomosci i wyciagam je funkcja substr ale jaki to zrobic zeby wyciagnac tylko ten link. Mysle ze najlepiej bedzie do pierwszej napotkanej spacji od momentu znalezienia slowa http... ale jak to zapisac substr ($tresc,$wynik, ....) gdzie $tresc to wiadomość w której szukany slowa a $wynik to miejsce w którym występuje dane slowo i jak zapisać trzeci argument którym ma być pierwsza napotkania spacja???
komentarz zamknięcia: Problem rozwiązany

2 odpowiedzi

+1 głos
odpowiedź 18 czerwca 2016 przez Comandeer Guru (600,810 p.)
wybrane 9 grudnia 2016 przez hiper007
 
Najlepsza
A nie lepiej wyciągnąć regexem?
komentarz 22 czerwca 2016 przez hiper007 Stary wyjadacz (11,270 p.)

Udało mi sie wyszukać wszystkie linki w danej wiadomosci tylko jak zrobić zeby były one w jednej lini odzielone spacjami a nie jedno pod drugim kazdy w innym wierszu ;) oto kod:

					$tab = explode(" ", $tresc);
							
						
					for($x=0;$x< count($tab);$x++)
					{
							
									$html="<a href='$tab[$x]' class='login5'>$tab[$x]</a>";
									
									$wypisz2=preg_replace('#(https?://[^ ]*)#', $html, $tab[$x]);
									
									
				

									echo "<pre>$wypisz2</pre>";
		
					}

A wyświetla mi sie tak:

 

Kupilem
nowy
samochod
na
stronie
http://otomoto.pl
i
sprzedalem
go
na
stronie
http://olx.pl
w
dobrej
cenie

 

 

1
komentarz 22 czerwca 2016 przez maly Nałogowiec (37,190 p.)

Jeśli chcesz użyć preg_replace to nie potrzebna jest tablica.

<?php
$subject = 'Kupilem nowy samochod na stronie https://otomoto.pl i sprzedalem go na stronie http://olx.pl w dobrej cenie';

$pattern = '#(https?://[^ ]*)#';

$replacement = '<a href="\\1" class="login5">\\1</a>';

$result = preg_replace($pattern, $replacement, $subject);

echo $result;

 

komentarz 22 czerwca 2016 przez hiper007 Stary wyjadacz (11,270 p.)
Dziekuje za podopowiedz :) juz wszystko jest tak jak byc powinno ;) z tym ze co bedzie jak uzytkownika wpisze np. www.google.pl i pominie prefix http://. co w takim przypadku mozna to zrobić w jednym wzorcu??
0 głosów
odpowiedź 18 czerwca 2016 przez MatiiTv Gaduła (3,790 p.)

możesz się pobawić w explode().

$getLinkFromString = explode(" ", $message);

Ja bym radził używać preg_match(). 

Regex quick reference
[abc]     A single character: a, b or c
[^abc]     Any single character but a, b, or c
[a-z]     Any single character in the range a-z
[a-zA-Z]     Any single character in the range a-z or A-Z
^     Start of line
$     End of line
\A     Start of string
\z     End of string
.     Any single character
\s     Any whitespace character
\S     Any non-whitespace character
\d     Any digit
\D     Any non-digit
\w     Any word character (letter, number, underscore)
\W     Any non-word character
\b     Any word boundary character
(...)     Capture everything enclosed
(a|b)     a or b
a?     Zero or one of a
a*     Zero or more of a
a+     One or more of a
a{3}     Exactly 3 of a
a{3,}     3 or more of a
a{3,6}     Between 3 and 6 of a
 

Podobne pytania

0 głosów
1 odpowiedź 197 wizyt
pytanie zadane 20 lutego 2022 w C i C++ przez Drożdżówka Obywatel (1,870 p.)
0 głosów
1 odpowiedź 1,744 wizyt
0 głosów
1 odpowiedź 247 wizyt
pytanie zadane 15 października 2017 w C i C++ przez Shiro Stary wyjadacz (10,300 p.)

92,551 zapytań

141,399 odpowiedzi

319,531 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...