Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
preg_match_all -Problem ? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-consult PHP Entwicklung
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
preg_match_all -Problem ?


 
php_php_2010
23-06-2010, 20:17 
 
Hallo ich bin neu bei Php,

ich würde gerne "DEN_INHALT_AUSLESEN_1" und "DEN_INHALT_AUSLESEN_2" auslesen, dazu habe ich mir folgende gedanken gemacht:


Orginalausschnitt:

<table class="Snipplet">

<tbody>

<tr >
<td class="image">
<a href="...">
<img src="....jpg" alt="..." class="..." />

</a>
</td>
<td class="name">
<dl class="List">
<dt class="platform">...</dt>
<dd class="platform">
<img src="..." alt="..."/>
</dd>


<dt class="name">...</dt>
<dd class="name">
<a href="..." id="...">...</a>

</dd>



<dt class="...">...</dt>
<dd>
<span class="...">...</span>

<span class="...">...</span>
</dd>


<dt class="...">...</dt>
<dd class="..."><a href="...">...</a></dd>


<dt class="...">...</dt>
<dd class="...">
</dd>

</dl>
</td>
<td class="actions">
<ul class="klist">
<li><a href="DEN_INHALT_AUSLESEN_1">...</a></li>
<li><a href="..." title="...">...</a></li>
<li><a href="...</a></li>

<li><a href="javascript:;" id="DEN_INHALT_AUSLESEN_2">...</a></li>
</ul>
</td>
</tr>



</tbody>

</table>




Lösungsansatz


//////////////////////////Basics/////////////////////////////////////////////

$tews='...'; //Achtung keine Dateiendung
$tews1='file:///C:/xampp/htdocs/xampp/skript/test/';


////////////////////////////////////////////////////////////////////

if($save=file_get_contents($tews)){

////////////////////////////////////////////////////////////////////

preg_match_all('/<tr><td><ul><li><a href="(.*?)"><\/li>/<\/ul>/<\/td>/<\/tr>',$save,$hit); //DEN_INHALT_AUSLESEN_1
preg_match_all('/<tr><td><ul><li><a id="(.*?)"><\/li>/<\/ul>/<\/td>/<\/tr>',$save,$hit); //DEN_INHALT_AUSLESEN_2






for($i=0,$max = count($Anzahl); $i < $max; $i++) {


$datei=fopen($tews1.'a.html','a+');


print $hit[1][$i];
fwrite($datei,$hit[1][$i]);
fclose($datei);




}//////////Schleifenende



}else{
print"<div style='background:red'>$id else file_get_contents </div><br>\n";
}
print "</nobr>";
print "</body>";
print "</html>";

?>


eigentlich soll das script nicht die Seite komplett einlesen, sondern nur DEN_INHALT_AUSLESEN_1/DEN_INHALT_AUSLESEN_2 auslesen.

Ich glaub das liegt irgendwie an preg_match_all;

 
AmicaNoctis
23-06-2010, 20:39 
 
Hallo und willkommen im Forum,

bitte beachte die Forenregeln. Deinen Beitrag kannst du mit dem Ändern-Button und danach dem Erweitert-Button bearbeiten. Bitte die Code-Tags (siehe Signatur) benutzen.

Gruß,

Amica

 
php_php_2010
23-06-2010, 21:47 
 
ok (;

 
AmicaNoctis
23-06-2010, 22:07 
 
Dass du mit deinem „Ich will anders sein als ihr Langweiler“-Einrückungsstil allen Helfern nur das Leben schwer machst, ist dir schon bewusst oder?

Mit dem zweimaligen Aufruf von preg_match_all überschreibst du dir jeweils die Variable $hit. PCRE erlaubt auch Alternativen mit |, vielleicht kommst du damit besser.

Deine regulären Ausdrücke sind an sich schon ungültig und müssten Fehler verursachen. Dazu steht auch was in den Forenregeln.

 
php_php_2010
24-06-2010, 09:19 
 
doch wie würde das anders lauten(in dem Fall), das ist ja mein Problem gewesen ...mit preg_matchall

 
AmicaNoctis
24-06-2010, 10:18 
 
Sorry, ich versteh die Frage nicht.

Hast du dein Error-Reporting inzwischen aufgedreht?

Edit: Wenn du wirklich nur solche a-Elemente in einer solchen Tabellenstruktur finden willst, wird das mit PCRE schwierig bis unmöglich. Mit DOM und XPath dagegen kann man sowas problemlos realisieren.


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:53 Uhr.