Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wyciągnięcie tekstu między danymi znakami
Forum PHP.pl > Forum > Przedszkole
n1k3r
Witam;

Szukam funkcji w php4 która by wyciągała tekst we wszystkich linijkach pliku który znajduje się między stałymi danymi znakami.

Przykładzik:
Kod
xsgke:to_chce_wyciągnąć:xsgke


Z góry dziękuje za informację.
siemakuba
Kłamczuszek z ciebie :) wcale nie szukasz, bo gdybyś jednak szukał to znalazł być chociażby dzisiejszy wątek:

http://forum.php.pl/index.php?s=&showt...st&p=315378

zmień tylko z replace na match.

pozdr.
Saddam92
  1. <?php
  2. $string = 'xsgke:to_chce_wyciągnąć:xsgke';
  3. $dane = 'xsgke';
  4. $pos1 = strpos($string, $dane);
  5. $pos2 = strrpos($string, $dane);
  6. $dane_dlugosc = $pos2-strlen($dane);
  7. $to_co_chcesz_wyciagnac = substr ($string, ($pos1+strlen($dane)), $dane_dlugosc);
  8.  
  9. echo ("Wynikiem z "".$string."" jest <b>".$to_co_chcesz_wyciagnac."</b>.");
  10. ?>


albo krótsze:
  1. <?php
  2. $string = 'xsgke:to_chce_wyciągnąć:xsgke';
  3. $dane = 'xsgke';
  4. $string = str_replace($dane, '', $string);
  5.  
  6. echo ("Wynikiem jest <b>".$string."</b>.");
  7. ?>
u mnie działa..
http://saddam.h4e.pl/php/ciagi.php
n1k3r
@Saddam92 niby ok, ale wyciąga tekst razem z ":" a jego właśnie być nie powinno smile.gif
Najlepiej jakby zapisać lewą i prawą stronę w oddzielnych zmiennych tj:
$lewa = "xsgke:";
$prawa = ":xsgke";

Wykonalne?
Saddam92
jasne...
  1. <?php
  2. $string = 'xsgke:to_chce_wyciągnąć:xsgke';
  3. $lewa = 'xsgke:';
  4. $prawa = ':xsgke';
  5.  
  6. $pos1 = strpos($string, $lewa);
  7. $pos2 = strrpos($string, $prawa);
  8.  
  9. $dane_dlugosc = $pos2-strlen($lewa);
  10. $to_co_chcesz_wyciagnac = substr ($string, ($pos1+strlen($lewa)), $dane_dlugosc);
  11.  
  12. echo ('Wynikiem z '.$string.' jest <b>'.$to_co_chcesz_wyciagnac.'</b>.');
  13. ?>
albo w wersji z str_replace()
  1. <?php
  2. $string = 'xsgke:to_chce_wyciągnąć:xsgke';
  3. $lewa = 'xsgke:';
  4. $prawa = ':xsgke';
  5.  
  6. $string = str_replace($lewa, '', $string);
  7. $string = str_replace($prawa, '', $string);
  8.  
  9. echo ('Wynikiem jest <b>'.$string.'</b>.');
  10. ?>
też powinno być wszystko okej.. i jest: http://saddam.h4e.pl/php/ciagi.php
albo jest jeszcze trzecia opcja:
  1. <?php
  2. $string = 'xsgke:to_chce_wyciągnąć:xsgke';
  3. $dane = 'xsgke';
  4. $pos1 = strpos($string, $dane);
  5. $pos2 = strrpos($string, $dane);
  6. $dane_dlugosc = $pos2-strlen($dane);
  7. $to_co_chcesz_wyciagnac = substr ($string, ($pos1+strlen($dane)), $dane_dlugosc);
  8. $to_co_chcesz_wyciagnac = str_replace(':', '', $to_co_chcesz_wyciagnac);
  9. echo ("Wynikiem z "".$string."" jest <b>".$to_co_chcesz_wyciagnac."</b>.");
  10. ?>
.. wiecej nie ma sensu pisac... wszystko działa.. generalnie wszystko jest napisane za pomocą paru funkcji:
  • strlen();
  • strpos();/strrpos();
  • substr();
  • str_replace();
w różnych kombinacjach ... jesli znasz efekty działania tych funkcji kazde kolejne rozwiazania sa juz tylko efektem twojej fantazji.. a o funkcjach poczytasz w manualu php
dtb
Cytat
strlen();
strpos();/strrpos();
substr();
str_replace();


czy nikt z was nie byl na tyle madry aby uzyc tylko 1 funkcji, ktora specjalnie do tego sluzy?

  1. <?php
  2. $string = 'xsgke:to_chce_wyciągnąć:xsgke';
  3. $dane = 'xsgke';
  4. preg_match('/'.$dane.':([^:]+):'.$dane.'/', $string, $match);
  5. echo $match[1];
  6. ?>


mozna rowniez tak:

  1. <?php
  2. $string = 'xsgke:to_chce_wyciągnąć:xsgke';
  3. $dane = 'xsgke';
  4. echo substr($string, $c=(strlen($dane)+1), -$c);
  5. ?>
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.