Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Zamiana znaków i wyciągnięcie z niej id
Johnas
post
Post #1





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


Witam, mam tablice wraz ze znakami:

$tablica[0] = "tablicy która nigdzie się nie odnosi";
$tablica[1] = "tablicy która również odnosi sie do %tablica_0";
$tablica[3] = "odnosimy się do %tablica_1";

I teraz pytanie, jak pozamieniać to aby wyszło całe zdanie "odnosimy się do tablicy która również odnosi się do tablicy która nigdzie się nie odnosi". Nie mogę użyć tam zmiennych dlatego chcę tablice pozamieniać na zmienne.

// Edit: id zmiennej muszę wyciągnąć z %tablica , a nieraz są w jednym zdaniu dwa %tablica_1 i %tablica_2

Ten post edytował GodOfPeople 25.09.2014, 22:30:35
Go to the top of the page
+Quote Post
xbigos
post
Post #2





Grupa: Zarejestrowani
Postów: 239
Pomógł: 27
Dołączył: 13.07.2005
Skąd: Jarocin

Ostrzeżenie: (0%)
-----


nie wiem czy dobrze rozumiem ale
  1. preg_match_all('/[0-9]{1}/', $tablica[0], $wynik);

EDIT:
Na upartego jakby id miał być dwucyfrowy to można przeszukać ciągu znaków dwucyfrowego.

Ten post edytował xbigos 25.09.2014, 23:48:53
Go to the top of the page
+Quote Post
kreatiff
post
Post #3





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

Ostrzeżenie: (0%)
-----


  1. foreach ( $tablica as &$t ) {
  2. while ( preg_match('#%tablica_(\d+)#', $t, $tmp) ) {
  3. $t = str_replace('%tablica_' . $tmp[1], $tablica[$tmp[1]], $t);
  4. }
  5. }
  6. unset($t);


To modyfikuje tablicę źródłową, więc jeśli jakiś początkowy element zostanie zmieniony, a gdzieś dalej będzie do niego odwołanie, to w tym dalszym odwołaniu podstawi się zmieniony element.

Więc trzeba kombinować dalej jak to rozwiązać.

Edycja, tutaj działa bez modyfikowania tablicy źródłowej, ale trzeba mieć pewność, że w tablicy źródłowej nie ma takich odwołań że będą się one zapętlać.
  1. foreach ( $tablica as $k => $w ) {
  2. $tablica2[$k] = $w;
  3. while ( preg_match('#%tablica_(\d+)#', $tablica2[$k], $tmp) ) {
  4. $tablica2[$k] = str_replace('%tablica_' . $tmp[1], $tablica[$tmp[1]], $tablica2[$k]);
  5. }
  6. }
Wynik w $tablica2.

Ten post edytował kreatiff 28.09.2014, 13:02:05
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 22:29