Zamiana całych wyrazów


(Damyrade1990) #1

Witam

Mam taką tablicę:

Array

(

[0] => Array

(

[0] => la

[1] => bla

)

[1] => Array

(

[0] => om

[1] => bla2

)

)

mam kod:

$str=str_replace($slowa[0][0], $slowa[0][1], $tekst);

i tekst: "Tla la bla"

chcę żeby zamieniało mi tylko całe wyrazy, bez fragmentow wyrazów. W jaki sposób to osiągnać ?

dziekuję :wink:


(floyd) #2

Tutaj przykład usuwania całych wyrazów z listy, ale możesz się pokusić o przerobienie tak jak tobie pasuje czyli zamianę jednego wyrazu na inny.

$in='ala,alabama,kalafior';


(Damyrade1990) #3

a co jeśli chcę zamienić wiele wyrazów ?


(Grzesie K) #4

Postaw na cwaniactwo: do wyrazów z z pierwszego postu dodaj spacje po obu stronach :smiley:


(Damyrade1990) #5

a jakiej funkcji użyć by zmieniało tylko jeden znaleziony ciag a nie wszystkie ?


(Damgora) #6

zamieniać wyrazy można np. tak:

    $ttekst = explode(' ', $tekst);$slowa[0] as $key = $pattern)$ttekst as $word)$word == $pattern)$word = $slowa[1][$key];$str = implode(' ', $ttekst); [/code]



po małej modyfikacji zamieni tylko pierwsze wystąpienie wyrazu:


[code=php]    $ttekst = explode(' ', $tekst);$slowa[0] as $key = $pattern)$ttekst as $word)$word == $pattern){$word = $slowa[1][$key];

(Damyrade1990) #7

a mógłbyś wytłumaczyć jak użyć tych przykaldów bo chyba coś pokrzaniłem ;p napisz jeśli możesz co z czego pobierasz czyli użyj tego kodu na jakimś konkretnym przykładzie


(Damgora) #8

zmienne starałem się dopasować do danych z pierwszego postu (choć chyba zmieniłem nieco układ tablicy). Przykładowo:

$tekst = 'tekst, w którym słowa mają być podmieniane';$slowa = Array (Array ('a', 'b', 'c'), Array ('x', 'y', 'z')); [/code]
a, b, c to wyrazy, które mają być znalezione.
x, y, z to wyrazy, które będą je zastępowały (odpowiednio 'x' za 'a', 'y' za 'b' i 'z' za 'c')

Ten skrypt dzieli wyrazy tylko na podstawie spacji, więc może sprawiać problemy, jeżeli w tekście są jakieś znaki interpunkcyjne. Wielkość liter, również musi się zgadzać.

edit:
w sumie to wystarczy pojedyncza tablica typu:[code=php]$slowa = Array('a'='x', 'b'='y', 'c'='z'); 

wtedy sam kod (wersja zamieniająca wszystkie powtórzenia) wyglądałby tak:    $ttekst = explode(' ', $tekst);    foreach($slowa as $pattern = $replacement)        foreach ($ttekst as $word)            if ($word == $pattern)                $word = $replacement;    $str = implode(' ', $ttekst); [/code]

(Damyrade1990) #9

ok, działa, dziekuję a teraz coś innego

$nazwa=($w=="cos") ? '$zm1' : '$zm2';

i chcę, żeby zmienna nazywała się zm1 lub zm2. Da się coś takiego zrobić ?


(Damgora) #10

posiłkując się tym tematem php-zmiana-nazwy-zmiennej-t381913.html myślę, że można to zrobić tak:

$nazwa=($w=="cos") ? 'zm1' : 'zm2';

$$nazwa = 'wartość';

Napisz co chcesz w ten sposób uzyskać bo mam wątpliwości czy dobrze kombinujesz :wink: .


(Damyrade1990) #11

Dzieki pomogło a teraz coś z innej beczki...

chcę pobrać coś z formularza ($_POST[aaa]), zapisać to do sesji by nie stracić danych, wykonać przekierowanie zależne od warunku i wypisać zawartośc sesji . Napisałem to tak:

Plik aaa.php

<?php

session_start();

$_SESSION['one']=2;

$_SESSION['two']=$_POST['aba'];


if(!isset($_GET['bka']) && $_GET['bka']!=true) {	

	header("Location:bbb.php");

}


unset($_GET['bka']);


echo '

';

print_r($_SESSION);

echo '

'; ?>[/code] plik bbb.php:
[code]<?php header("Location:aaa.php?bka=true"); ?>

ale to nie daje mi takiego efektu jakbym chciał. print_r nie pokzuje tego co powinno. Gdzie jest błąd ? Prosze o poprawienie kodu tak a by tablica $_SESSION zawierala to co jest w $_POST['aba'] oraz 2


(Damgora) #12

może konkretniej - jak jest, a jak powinno być?