[PHP] jak wyszukać dany tekst nie wiedząc dokładnie jaki jes

0

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?

0

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 ;)

0

a czy te wyrażenia regularne można zastosować w funkcjii strpos? bo preg_match nie zwraca pozycji tekstu.

0

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'
)
0

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.

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