Czy istnieje funkcja do wyszukiwania tekstu w ciągu znaków?

0

Z większego bloku tekstu pobranego metodą POST potrzebuję wyciąć kilka ważnych informacji. Potrzebował bym funkcję w której mógłbym zdefiniować po jakim znaku mam zacząć kopiować i na jakim znaku przestać.

4

strpos (http://php.net/manual/en/function.strpos.php) znajduje pierwsze wystąpienie ciągu w innym ciągu. Jej koleżanka strrpos() robi to samo, ale od końca.
substr (http://php.net/substr) wycina ze stringa znaki od pewnego miejsca (ewentualnie da się podać ilość znaków).

Wystarczy skleić ze sobą.

0

Czy możecie podać przykład wykorzystania strpos oraz strrpos() w sposób "połączony". W taki sposób żeby wyciąć tylko długość odpowiedzi na pakiet ping. Czyli:
Z ciągu:

64 bytes from 216.58.209.67: icmp_seq=0 ttl=56 time=9.442 ms
64 bytes from 216.58.209.67: icmp_seq=1 ttl=56 time=10.175 ms

Wyciągnąć tylko:

9.442 ms
10.175 ms

Z góry serdecznie dziękuję, docenię każdą pomoc.

dodanie znaczników <code class="none"> - @furious programming

2
$s = "64 bytes from 216.58.209.67: icmp_seq=0 ttl=56 time=9.442 ms";
echo substr($s, strpos($s, "time=") + 5); // plus 5, bo tyle ma "time="
0

Na jednej linii działa. Jednak zależy mi żeby wyszukiwać określone ciągi znakowe z dużego ciągu. Czyli np żeby wyciąć od wystąpienia danego tekstu np time= ale tylko do 64 bytes. Tak żeby działało to również gdy do zmiennej $s zapiszę obie linie odpowiedzi pakietu ping. Czy da radę w ten sposób?

Nie wiem czy dobrze określam to co chcę osiągnąć. Generalnie muszę założyć, że nie znam długości ciągu, który chce wyciąć. Ale za to mogę założyć, że znajduje się on na końcu każdej linii. Dlatego może można podzielić tekst pobrany przez POST funkcją nl2br na linie i kopiować od wystąpienia frazy np "time=" do końca linii. A następnie na kolejnej linii wykonać to samo itd.

1
$input = "64 bytes from 216.58.209.67: icmp_seq=0 ttl=56 time=9.442 ms\r\n".
	"64 bytes from 216.58.209.67: icmp_seq=1 ttl=56 time=10.175 ms";
	
preg_match_all("/time=([\d.]+)/", $input, $out);

foreach ($out[1] as $match)
   echo $match . "\r\n";
0

A teraz mam pytanie bo ja zamierzam też zastąpić podany ciąg łańcuchem znaków w moim przypadku jest coś takiego

np mamy dany string Ja jestem na |||kot(zwierze)||| kocie

I mi chodzi o to, żeby wyciąć dany string |||kot(zwierze||| i zastąpić toi takim stringiem
Ja jestem na kocie

1 użytkowników online, w tym zalogowanych: 0, gości: 1