Skocz do zawartości

[PHP] Nietypowa obróbka tekstu - problem


-macgyver-

Rekomendowane odpowiedzi

Witam mam dość nietypowy problem, niedawno zauważyłem iż na jedej ze stron wrzucając hurtowo teksty z plików .txt pojawiły się małe krzaczki jeśli mozna to tak nazwać a mianowicie:

Mamy sobie tekst:

"Ala ma kota" - w bazie zapisane mam rAla ma kotar1;

- Początek zdania lub stringu pierwszy cudzysłów zamienia na - r

- Koniec zdania bądź stringu końcowy cudzysłow zamienia na - r1;

Teraz pojawia się problem jak zmienić to znów na cudzysłowia, jesli chodziloby o pojedyńcze stringi spokojnie preg_replace by wystarczył, a to jak dźgnąc i naprawić.. Proszę o jakąś sugestję, dzieki za pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

Trochę zagmatwany opis,

zrób to co sam napisałeś:

- Początek zdania lub stringu pierwszy cudzysłów zamienia na - r

- Koniec zdania bądź stringu końcowy cudzysłów zamienia na - r1;

co prawda nie rozumiem o co Ci chodzi ale wydaje sie że jest to proste, znajdz poczatek i koniec lini/zdania sprawdz czy jest r/r1 i zamień na odpowiednie znaki,

Wyrażenia regularne należy stosować jak wszystko z umiarem i zrozumieniem. Tam gdzie nie trzeba nie należy wciskać na siłę metod które służą do innych celów.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli nie łapiesz o co chodzi, napiszę krótko i jeszcze raz:) - Zamiast zdania - rAla ma kotar1; chce mieć zdanie - "Ala ma kota", ogólnie to co mówisz swietnie się sprawdza jeśli mówimy o pojedyńczych słowach ale jak badać całe zdania? Nie problem jest również wyeliminować - r1; ale jak wyeliminować r z wyrazu rAla, dodam jeszcze że string może wyglądać - rala, co jeszcze bardziej utrudnia ponieważ mozna byłoby rozpoznawać to po dużej literze... A tak? Dzięki za pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli zdania z cudzysłowem możesz rozbić na tablice, to może tak:

$tekst = "rAla ma kotar1"; //przykład linijki w tablicy

$tekst = str_replace("r1","\"", $tekst);

if (substr($tekst, 0, 1) == "r")

$tekst = "\"".strchr($tekst, "r");

$tekst = str_replace("\"r","\"", $tekst);

Odnośnik do komentarza
Udostępnij na innych stronach

Mariosoft dzieki działa, ale musze iść dalej a co jeśli tekst wygląda nastepująco:

Beata ma psa, Beata nie ma psa, rAla ma kotar1, jakiś tekst. Tekst tekst tekst tekst, znów test i tekst rniestety koń zdechłr1;.

Jak badać zdania w takim wypadku?

Odnośnik do komentarza
Udostępnij na innych stronach

Mariosoft dzieki działa, ale musze iść dalej a co jeśli tekst wygląda nastepująco:

Beata ma psa, Beata nie ma psa, rAla ma kotar1, jakiś tekst. Tekst tekst tekst tekst, znów test i tekst rniestety koń zdechłr1;.

Jak badać zdania w takim wypadku?

Jest to do zrobienia, jutro po południu Ci to napisze.

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Najprościej podziel na wyrazy usuń co nie pasuje i złóż do kupy.

Ja bym się martwił bardziej o to jak nie dopuścić do usunięcia r np z wyrazu rower :)

Najlepiej przed importem danych zamień cudzysłowy na przykład na # i potem masz prostą sprawę możesz z tym robić co chcesz.

Odnośnik do komentarza
Udostępnij na innych stronach

Zakładając, że po cudzysłowie masz wielką literę powinno działać.

$tekst = str_replace("r1","\"", $tekst);

$licz = strlen($tekst);

for ($i=0; $i<$licz; $i++)

if ($tekst[$i] == "r" and ereg("^[A-Z]*$", $tekst[$i+1]))

$tekst[$i] = "\"";

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności