Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wyciągnąć ciąg zniaków z rekordu, który zawiera kod php?
Forum PHP.pl > Forum > Bazy danych > MySQL
moniek.fm
Witam wszystkich.

Mam problem taki jak w tytule. Posiadam w bazie danych rekord w którym jest zapisana kod php części strony. Potrzebuję wyciągnąć z niego tylko to co jest pomiędzy znacznikami <div> </div>. Próbowałem przy użyciu LIKE ale niestety się udało. Może ktoś spotkał się kiedyś z czymś takim. W necie nie znalazłem odpowiedzi, a sam jestem za głupi żeby sobie poradzić. Proszę o pomoc

piotrooo89
a co pozwala Ci jednoznacznie określić że w danym wierszu w danej kolumnie jest kod php? bo bez tego to się nic nie zrobi bo nie wiadomo jak tego szukać.
moniek.fm
Ups sorry...
Wdała się pomyłka. TO nie jest php tylko html. W każdym razie problem dla mnie nie do przeskoczenia.

piotrooo89
no to co tam masz, jaki html? musisz mieć jakiś jeden tag, który Ci to pozwoli zidentyfikować.
moniek.fm
Chce wyciągnąć z tego rekordu taki tekst:

<div class="itemContainerMain">
<span class="title">
<a href="/link/target.php" title="target" target="_blank">target</a>
</span>
<a href="/link/target2.php" title="target2" target="_blank">
<img src="/jpg/thumbs/240x180/1924/3846335/1.jpg" alt="target2" width="240" height="180" /></a>
<span class="sortLinks">
<a href="/link/link.php" title="link" target="_blank">link1</a> / <a href="/link/link2.php" title="link2" target="_blank">link2</a> / <a href="/link/link3.php" title="link3" target="_blank">link3</a> / <a href="/link/link4.php" title="link4" target="_blank">link4</a></span>
</div>

Przed tym tekstem i po nim jest dalsza część strony.
Proszę o pomoc...
piotrooo89
jest taki hack-way

  1. SELECT SUBSTRING(nazwa FROM LOCATE('<div', nazwa) FOR LOCATE('</div>', nazwa, LOCATE('<div', nazwa))-LOCATE('<div', nazwa)+6) FROM test;


ale lepiej takie dane obrabiać po stronie aplikacji.
moniek.fm
Kurcze dzięki za odpowiedź. Zaraz to spróbuje przetestować. Prosiłbym jeszcze o kilka słów wyjaśnienia odnośnie tego co napisałeś bo mogę sobie sam nie poradzić. Chciałbym też wiedzieć dlaczego takie operacje lepiej wykonać po stronie aplikacji...

Pozdrawiam.

Cytat(piotrooo89 @ 22.01.2012, 22:26:02 ) *
jest taki hack-way

  1. SELECT SUBSTRING(nazwa FROM LOCATE('<div', nazwa) FOR LOCATE('</div>', nazwa, LOCATE('<div', nazwa))-LOCATE('<div', nazwa)+6) FROM test;


ale lepiej takie dane obrabiać po stronie aplikacji.



Zrobiłem jak w podanym kodzie. Niby wszystko teraz działa, ale pojawił pojawił się nowy problem. W wyniku mam: Resource id #6. Czyli znów robię coś nie tak.
Pomóżcie..
piotrooo89
Cytat(moniek.fm @ 23.01.2012, 21:29:42 ) *
Kurcze dzięki za odpowiedź. Zaraz to spróbuje przetestować. Prosiłbym jeszcze o kilka słów wyjaśnienia odnośnie tego co napisałeś bo mogę sobie sam nie poradzić. Chciałbym też wiedzieć dlaczego takie operacje lepiej wykonać po stronie aplikacji...


zapytanie jest proste substring - wycinanie tekstu z podanego zakresu, Ty jako iż nie wiesz w jakim miejscu musisz zacząć wycinać więc określasz sobie to za pomocą locate.

Cytat(moniek.fm @ 23.01.2012, 21:29:42 ) *
Zrobiłem jak w podanym kodzie. Niby wszystko teraz działa, ale pojawił pojawił się nowy problem. W wyniku mam: Resource id #6. Czyli znów robię coś nie tak.
Pomóżcie..


no ale pokaż jakiś kod, który Ci to zwraca...
ShadowD
Nie możesz pobrać tej wartości w całości i użyć prega?
moniek.fm
Witam ponownie wszystkich.
W końcu sobie z tym poradziłem. Resource id #6 pojawiało mi się ze względu na to że omyłkowo wynik próbowałem drukować przez mysql_query() zamiast mysql_fetch_array(). Już jak się zorientowałem w czym tkwi problem postanowiłem wynik zapytania wpisać również do bazy danych. Niestey wtedy baza zaczęła wariować. Z pomocą przyszedł: mysql_escape_string() i już wszystko śmiga jak należy!

piotrooo89 - WIELKIE DZIĘKI!!!

P.S.
ShadowD mógłbyś trochę rozwinąć swój post. Może twoje rozwiązanie będzie prostsze...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.