Mam problem. Chciałbym znaleźć pozycję danego tekstu: 'jol-----jol' jednak nie wiem ile będzie miał tych myślników. Czy można zastosować coś takiego jak gwiazdka, która zastępuje dowolny ciąg znaków?
To będzie proste wyrażenie regularne, dla tego przypadku:
/jol[\-]+jol/i
a gdyby miałyby być nie tylko myślniki, ale również inny dowolny ciąg znaków:
/jol.*?jol/i
Wyrażenia regularne to potęga ;)
a czy te wyrażenia regularne można zastosować w funkcjii strpos? bo preg_match nie zwraca pozycji tekstu.
Ja bym radził rozwalić explode, a potem usunąć puste wiersze w tabeli:
function partString($str) {
$final = array();
$str2 = explode('-', $str);
if (count($str2) < 1) return false;
foreach($str2 as $val)
if ($val != '') $final[] = $val;
return($final);
}
Dla przykładu witaj---1-3-----6---text ze spacja funkcja zwróci:
array (
[0] => 'witaj',
[1] => 1,
[2] => 3,
[3] => 6,
[4] => 'text ze spacja'
)
bo preg_match nie zwraca pozycji tekstu
zwraca, zwraca, trzeba tylko uważnie manual czytać ;)
Przykład ze strony:
<?php
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>
zwróci
Array
(
[0] => Array
(
[0] => def
[1] => 0
)
)
Zatem, jako 3 parametr podaje się zmienną, w której zapisana będzie tablica z wynikami działania funkcji preg_match, a jako 4 paramter, stałą PREG_OFFSET_CAPTURE, która będzie informowała parser, że ma zapisać pozycję znalezionego ciągu znaków.