preg_match_all
Tom
- php
0 bernhard.s0 Tom
0 wfux
Hallo Leute,
ich mühe mich ab mit preg_match_all. Das sah so einfach aus.
Was ist falsch an der Funktion?
function get_rows($data)
{
preg_match_all ("|<tr>\s*(.*)\s*</tr>|U",$data,
$out[],PREG_PATTERN_ORDER);
if (!is_array($out)) return false;
$ret = array();
foreach ($out as $line)
{
$ret[] = $line[1][0];
}
return $ret;
}
Ich will nun nach und nach eine Tabelle auseinandernehmen. Könnt Ihr mir helfen?
Grüße
Tom
Hi,
preg_match_all ("|<tr>\s*(.*)\s*</tr>|U",$data, out[],PREG_PATTERN_ORDER);
hast Du schon folgendes versucht:
preg_match_all ("/|<tr>\s*(.*)\s*</tr>|U/",$data,$out[],PREG_PATTERN_ORDER);
Grüße Bernhard
Hallo Bernhard,
preg_match_all ("|<tr>\s*(.*)\s*</tr>|U",$data, out[],PREG_PATTERN_ORDER);
hast Du schon folgendes versucht:
preg_match_all ("/|<tr>\s*(.*)\s*</tr>|U/",$data,$out[],PREG_PATTERN_ORDER);
Danke für den Versuch, aber klappt auch nicht. Das verrückte ist ja, dass ich ein paar Zeilen tiefer vier ähnliche preg_match_all dirket auf level 1 (also nicht in einer Funktion) stehen habe, und die tun's. Ich kann da absolut keinen Unterschied sehen:
#####################
preg_match_all ("|php3?n=(.*)&x=|U",$cell,$out[],PREG_PATTERN_ORDER);
preg_match_all ("|&x=(.*)&y=|U",$cell,$out[],PREG_PATTERN_ORDER);
preg_match_all ("|&y=(.*)">|U",$cell,$out[],PREG_PATTERN_ORDER);
preg_match_all ("|size="3">\s+<b>(.*)</b>|U",$cell,$out[],PREG_PATTERN_ORDER);
preg_match_all ("|size="2">\s+(.*)<br>|U",$cell,$out[],PREG_PATTERN_ORDER);
echo "<pre>";
print_r ($out);
echo "</pre>";
####################
Wo ist dcenn da der Unterschied?
Grüße
Tom
Hallo Leute,
Nabend
ich mühe mich ab mit preg_match_all. Das sah so einfach aus.
Was ist falsch an der Funktion?
function get_rows($data)
{
preg_match_all ("|<tr>\s*(.*)\s*</tr>|U",$data,
$out[],PREG_PATTERN_ORDER);if (!is_array($out)) return false;
$ret = array();
foreach ($out as $line)
{
$ret[] = $line[1][0];
}
return $ret;
}Ich will nun nach und nach eine Tabelle auseinandernehmen. Könnt Ihr mir helfen?
function get_rows($data)
{
preg_match_all ("|<tr>\s*(.*)\s*</tr>|U",$data,$out[],PREG_PATTERN_ORDER);
if (!is_array($out)) return false;
$ret = array();
foreach ($out[0][0] as $line) {
$ret[] = $line;
}
}
Dies speichert jeweils den Inhalt zwischen "<tr>" und "</tr>" in $ret.
Sieht $data z.B. so aus:
$data = "<tr>blhahh</tr>\n<tr>jldhfjhj2</tr><tr>jdhfh3</tr>";
...dann wäre eben
in $ret[0] = "blhahh"
in $ret[1] = "jldhfjhj2"
in $ret[2] = "jdhfh3"
Mal davoin abgesehen, diese Funktion da, ...dein $ret-Array ist nach dem Funktionsausruf wieder weg (nur bevor du ectl. aus diesem Grunde wieder posten solltest), denn ich möcht ja NICHT annehmen, dass $ret eine globale Variable ist ;o)...
Mal davon abgesehen.. die ausgebesserte Funktion geht bei mir ohne Probleme.
Grüße
dito.
Tom
wfux