Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: regex i odczyt z pliku
Forum PHP.pl > Forum > Gotowe rozwiązania
Dominik
Heh ja juz sie pogubilem smile.gif Nie dziala mi takie cos:
[php:1:2c3836c9d2]<?php
function dzread($addr)
{
$fd = fopen( $addr, "r" );
if (!$fd) {
return "";
}
$ret = fread( $fd, 800000 );
fclose($fd);
return $ret;
}
$a = dzread("http://psi.affinix.com/");
$pat = "<strongs+style="font-size:s+12px;">(.*?)</strong>";
$rep = "<div class="news">$1</div>";
echo preg_replace($pat, $rep, $a);
?>[/php:1:2c3836c9d2]
Powyzszy skrypt ma wylapywac tekst znajdujacy sie miedzy znacznikami <strong style="font-size: 12px;"> a </strong> i wypisac je w znacznikach <div class="news"> i </div>
Paul
[php:1:7ec0480be3]<?php
function dzread($addr)
{
$fd = fopen( $addr, "r" );
if (!$fd) {
return "";
}
$ret = fread( $fd, 800000 );
fclose($fd);
return $ret;
}
$a = dzread("http://psi.affinix.com/");
$pat = "/<strongs+style="font-size:s+12px;">(.*?)</strong>/";
$rep = "<div class="news">1</div>";
echo preg_replace($pat, $rep, $a);
?>[/php:1:7ec0480be3]
Dominik
Hmm... no tak ale ten skrypt nie robi tego co chcem, zupelnie nie to smile.gif
Paul
Zobacz takie cos:
[php:1:0a43eaf680]<?php
function dzread($addr)
{
$fd = fopen( $addr, "r" );
if (!$fd) {
return "";
}
$ret = fread( $fd, 800000 );
fclose($fd);
return $ret;
}
$a = dzread("abc.txt");
$pat = "/<strongs+style="font-size:s+12px;">([^<]*[^/]*[^s]*[^t]*[^r]*[^o]*[^n]*[^g]*[^>]*)</strong>/";
$rep = "<div class="news">1</div>";
echo preg_replace($pat, $rep, $a);
?>[/php:1:0a43eaf680]

Troche przerobilem i chyba nawet dziala:

Zrodlo:
Kod
<strong style="font-size: 12px;"><b><i>a</i></b> </strong>

<strong style="font-size: 12px;"> b </strong>

<strong style="font-size: 12px;"> c        </strong>

<strong style="font-size: 12px;"> aaaaa



aa strong>



</strong>

zzzz<strong style="font-size: 12px;">a  </strong>

<strong style="font-size: 12px;"> a </strong>

<strong style="font-size: 12px;"> a





<b>a</b>





</strong>


Wynik:
Kod
<div class="news"><b><i>a</i></b> </div>

<div class="news"> b </div>

<div class="news"> c        </div>

<div class="news"> aaaaa



aa strong>



</div>

zzzz<div class="news">a  </div>

<div class="news"> a </div>

<div class="news"> a





<b>a</b>





</div>
Dominik
Moze mi nie uwierzysz ale u mnie to nie dziala smile.gif Juz nie mam sily do tego skryptu :x , zeby nie bylo ze robie blad to uzywam Ctrl+C i zamiast abc.txt wpisuje http://psi.affinix.com/ i juz przestaje dzialac... Znaczy wczytuje jakies 1/3 ale nie wiem co to ma wspolnego z <strong style="font-size:12px">
Liko
Umnie to działa. Nie wiem. Ja to robie tak. Biore tworze plik "ble.txt" i zmieniam rozrzezenie na php. Później otwieram w notatniku i wklejam to:
[php:1:11a7895626]
<?php
function dzread($addr)
{
$fd = fopen( $addr, "r" );
if (!$fd) {
return "";
}
$ret = fread( $fd, 800000 );
fclose($fd);
return $ret;
}
$a = dzread("abc.txt");
$pat =
"/<strongs+style="font-size:s+12px;">([^<]*[^/]*[^s]*[^t]*[^r]*[^o]*[^n]*[^g]*[
^>]*)</strong>/";
$rep = "<div class="news">1</div>";
echo preg_replace($pat, $rep, $a);
?>[/php:1:11a7895626]

Naciskam CTRL+S. Tworze nastepny plik "abc.txt" zapisuje go, nastepnie edytuje i wklejam:
Kod
<strong style="font-size: 12px;"><b><i>a</i></b> </strong>

<strong style="font-size: 12px;"> b </strong>

<strong style="font-size: 12px;"> c        </strong>

<strong style="font-size: 12px;"> aaaaa



aa strong>



</strong>

zzzz<strong style="font-size: 12px;">a  </strong>

<strong style="font-size: 12px;"> a </strong>

<strong style="font-size: 12px;"> a





<b>a</b>





</strong>



Zapisuje. Później te dwa pliki uploduje na serwer który obsługuje php. Plikowi abc.txt nadaje odpowiednie prawa dostępu. Następnie wpisuje: http://net.liko.sytes.net/ble.php i działa.
Paul
Ja robie tak samo i tez mi dziala winksmiley.jpg
Dominik
Cytat
Ja robie tak samo i tez mi dziala winksmiley.jpg

A czy ja mowie ze mi nie dziala to z abc.txt?
Ja mowie ze mi nie dziala to:
[php:1:7c95107fdf]<?php
function dzread($addr)
{
$fd = fopen( $addr, "r" );
if (!$fd) {
return "";
}
$ret = fread( $fd, 800000 );
fclose($fd);
return $ret;
}
$a = dzread("http://psi.affinix.com/");
$pat =
"/<strongs+style="font-size:s+12px;">([^<]*[^/]*[^s]*[^t]*[^r]*[^o]*[^n]*[^g]*[
^>]*)</strong>/";
$rep = "<div class="news">1</div>";
echo preg_replace($pat, $rep, $a);
?> [/php:1:7c95107fdf]
A wyglada tak.
Paul
Teraz dziala. Problem byl w tym, ze fopen nie czytalo calej zawartosci strony, tylko poczatek... Przerobilem troche - nie jest to idealne bo obcialem naglowki troche topornie... Ktos na forum kiedys pisal, ze jest klasa do tego...
[php:1:9dae022b50]<?php
function dzread($addr)
{
$fp = fsockopen($addr, 80, $errno, $errstr, 30);
if (!$fp) {
return "";
} else {
$out = "GET / HTTP/1.1rn";
$out .= "Host: ".$addr." rn";
$out .= "Connection: Closernrn";
fwrite($fp, $out);
while (!feof($fp)) {
$return .= fgets($fp, 128);
}
fclose($fp);
}
return substr($return,strpos($return,'<!DOCTYPE'));
}
$a = dzread("psi.affinix.com");
$pat = "/<strongs+style="font-size:s+12px;">([^<]*[^/]*[^s]*[^t]*[^r]*[^o]*[^n]*[^g]*[^>]*)</strong>/";
$rep = "<div class="news">1</div>";
echo preg_replace($pat, $rep, $a);
?>[/php:1:9dae022b50]
Dominik
No teraz dziala ale dalej nie to biggrin.gif
Widze, ze mnie od poczatku nie zrozumiales wiec podam przyklad co ma mi ten skrypt wypluc (stan na dzisiaj, moze sie zmienic) :

Kod
<div class="news">Version 0.9.2 Available</div>

<div class="news">Psi 0.9.2-test2 Is Available For Download</div>

Tylko i wylacznie te dwa wiersze a nie wyswietlac cala strone.
Paul
A to co innego snitch.gif
[php:1:435faf9c00]<?php
function dzread($addr)
{
$fp = fsockopen($addr, 80, $errno, $errstr, 30);
if (!$fp) {
return "";
} else {
$out = "GET / HTTP/1.1rn";
$out .= "Host: ".$addr." rn";
$out .= "Connection: Closernrn";
fwrite($fp, $out);
while (!feof($fp)) {
$return .= fgets($fp, 128);
}
fclose($fp);
}
return substr($return,strpos($return,'<!DOCTYPE'));
}
$a = dzread("psi.affinix.com");
$pat = "/<strongs+style="font-size:s+12px;">([^<]*[^/]*[^s]*[^t]*[^r]*[^o]*[^n]*[^g]*[^>]*)</strong>/";
$rep = "<div class="news">1</div>";
$a = preg_replace($pat, $rep, $a);
$pat = "/<divs+class="news">[^<]*[^/]*[^d]*[^i]*[^v]*[^>]*</div>/";
preg_match_all($pat,$a,$cool.gif;
for($i=0; $i<count($b[0]);$i++){
echo $b[0][$i];
}
?>[/php:1:435faf9c00]
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-2025 Invision Power Services, Inc.