Wyrażenia regularne - pozycja dopasowania

0

Witam.

{
$wyrazenie = "~[a-zA-ZąćęłńóśźżĄĘŁŃÓŚŹŻ]+~";
	
	if(preg_match_all($wyrazenie,$tekst,$wyniki))
	{
		for($x=0;$x<count($wyniki[0]);$x++)
		{
			echo $wyniki[0][$x].';';
		}
	}
}

Chciałbym dowiedzieć się jak w PHP określić położenie(index w stringu) danego dopasowania.
W C# korzystałem z match.Index i match.Length. Chodzi o analogiczne funkcje/rozwiązania. Z góry dziękuje za sugestie.

Pzdr

0

Ewentualnie mógłbym zastosowac

mixed preg_replace ( mixed $pattern , mixed **$replacement** , mixed $subject [, int $limit = -1 [, int &$count ]] ),

ale nie wiem jak w PHP zrobić aby $replecmant było uzależnione od tego co wyszuka np. Chciałbym aby dodawało do dopasowania znak na początku i na końcu np. jeśli dopasowanie będzie "kot" to zamieni na* "#kot#"*. Z góry dziękuje

0
$subject = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.';
$pattern = '/ipsum/';
$matches = [];
preg_match($pattern, $subject, $matches);
if (!empty($matches))
{
    $posn = strpos($subject, $matches[0]);
}
else
{
    $posn = -1;    
}

var_dump($posn);
0

flaga PREG_OFFSET_CAPTURE

0

Dzieki za sugestie. Moim celem było dodanie znaku przed i po dopasowaniu. Znalazłem coś takiego:

Wrzucam, bo ta funkcja jest słabo za-indexowana. Może się komuś przyda.

$tekst = preg_replace_callback($wyrazenie,
function($matches){
return '#'.$matches[0].'@';
}
,$tekst);

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