Reguläre Ausdrücke(preg_match_all) gibt nichts zurück!
Grizzly
- php
0 Felix Riesterer0 Kai3450 Grizzly
Hallo Leute,
ich habe das problem, das bei diesem Code
<form name="form" method="post" action="regEx.php">
<table align="center">
<tr>
<td>
<textarea name="eingabe" id="eingabe" cols="40" rows="10"></textarea>
</td>
</tr>
<tr>
<td>
<?PHP ersetzen(); ?>
</td>
</tr>
<tr>
<td align="center">
<input name="submit" type="submit" value="E-mails holen" />
</td>
</tr>
</table>
</form>
<?PHP
$arr = array("0" => array(1, 2, 3, 4), "1" => array(5, 6, 7, 8));
foreach($arr as $i => $anzahl)
{
foreach($arr[$i] as $j => $anzahl)
{
echo $arr[$i][$j]."\n";
}
}
function ersetzen()
{
$eingabe = $_POST['eingabe'];
$ausgabe = "";
$suchen = "[a-zA-Z]";
preg_match_all($suchen, $eingabe, $treffer);
foreach($treffer as $i => $anzahl)
{
foreach($treffer[$i] as $j => $anzahl)
{
echo "test".$i.$j;
$ausgabe .= $treffer[$i][$j]."\n";
}
}
echo '<textarea readonly="readonly" name="ausgabe" id="ausgabe" cols="40" rows="5">'.$ausgabe.'</textarea>';
print_r($treffer);
}
?>
die Variable $treffer scheinbar leer ist egal wonach ich per regEx suche, preg_match_all gibt mir nichts aus.
Ich fummel schon seit Tagen an diesem doch relativ überschaubarem Code und komme auf keine Lösung ich hoffe einer von euch kann mir da helfen.
Danke im Voraus, Grizzly
Lieber Grizzly,
$suchen = "[a-zA-Z]"; preg\_match\_all($suchen, $eingabe, $treffer);
das, was da in der Variable "$suchen" steht, ist kein reguläres Suchmuster. Informiere Dich, wie die in PHP auszusehen haben.
Liebe Grüße,
Felix Riesterer.
Hi,
$suchen = "[a-zA-Z]"; preg\_match\_all($suchen, $eingabe, $treffer);
das, was da in der Variable "$suchen" steht, ist kein reguläres Suchmuster. Informiere Dich, wie die in PHP auszusehen haben.
MfG ChrisB
Lieber ChrisB,
natürlich habe ich auf die Delimiter abgehoben. Mir ist keine Möglichkeit bekannt, in PHP ein Suchmuster ohne diese Delimiter (oder einem enstprechenden Ersatz) zu notieren. Ergo stand in der Variable (für PHP) kein Suchmuster. Dass die in der Variable notierte Zeichenkette sehr wohl ein Suchmuster im eigentlichen Sinne darstellt, wollte ich nicht in Abrede stellen.
Liebe Grüße,
Felix Riesterer.
Hi,
natürlich habe ich auf die Delimiter abgehoben.
Ich auch.
Mir ist keine Möglichkeit bekannt, in PHP ein Suchmuster ohne diese Delimiter (oder einem enstprechenden Ersatz) zu notieren.
Und dieses hat Delimiter.
MfG ChrisB
Lieber Grizzly,
$suchen = "[a-zA-Z]"; preg\_match\_all($suchen, $eingabe, $treffer);
das, was da in der Variable "$suchen" steht, ist kein reguläres Suchmuster. Informiere Dich, wie die in PHP auszusehen haben.
Liebe Grüße,
Felix Riesterer.
Laut dieser Seite ist das schon ein reguläres Suchmuster, wenn ich da etwas missverstehe kläre mich bitte auf.
Lg Grizzly
[latex]Mae govannen![/latex]
$eingabe = $\_POST['eingabe'];
Wozu die Umkopiererei? Das ist fast immer sinnlos.
$suchen = "[a-zA-Z]";
Wo sind die Delimiter? Willst du wirklich nur jeweils ein Zeichen pro match?
Stur lächeln und winken, Männer!
Kai
Hi,
$suchen = "[a-zA-Z]";
Wo sind die Delimiter?
Am Anfang und am Ende.
http://www.php.net/manual/en/regexp.reference.delimiters.php:
“In addition to the aforementioned delimiters, it is also possible to use bracket style delimiters where the opening and closing brackets are the starting and ending delimiter, respectively.”
MfG ChrisB
[latex]Mae govannen![/latex]
$suchen = "[a-zA-Z]";
Wo sind die Delimiter?
Am Anfang und am Ende.
http://www.php.net/manual/en/regexp.reference.delimiters.php:
“In addition to the aforementioned delimiters, it is also possible to use bracket style delimiters where the opening and closing brackets are the starting and ending delimiter, respectively.”
Hm.
$eingabe = "foobar";
$suchen = "[a-zA-Z]";
$u = preg_match_all($suchen, $eingabe, $treffer);
var_dump($u, $treffer);
# int(0) array(1) { [0]=> array(0) { } }
$eingabe = "foobar";
$suchen = "/[a-zA-Z]/";
$u = preg_match_all($suchen, $eingabe, $treffer);
var_dump($u, $treffer);
# int(6) array(1) { [0]=> array(6) { [0]=> string(1) "f" [1]=> string(1) "o" [2]=> string(1) "o" [3]=> string(1) "b" [4]=> string(1) "a" [5]=> string(1) "r" } }
Stur lächeln und winken, Männer!
Kai
Hi,
Hm.
$eingabe = "foobar";
$suchen = "[a-zA-Z]";
$u = preg_match_all($suchen, $eingabe, $treffer);
var_dump($u, $treffer);int(0) array(1) { [0]=> array(0) { } }
Selbstverständlich kein Treffer - $eingabe enthält ja auch nicht den Text a-zA-Z, nach dem du mit diesem Muster suchst.
MfG ChrisB
--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
$eingabe = $\_POST['eingabe'];
Wozu die Umkopiererei? Das ist fast immer sinnlos.
Naja ich find es als einfache Variable übersichtlicher deswegen habe ich das gemacht.
$suchen = "[a-zA-Z]";
Wo sind die Delimiter? Willst du wirklich nur jeweils ein Zeichen pro match?
Was sind Delimiter? Nein will ich im nach hinein nicht mehr das ist ausschließlich zu test zwecken, ob sich da überhaupt etwas tut.
Nacher wird die hiernach gesucht "\s[a-zA-Z_0-9.]+@[a-zA-Z_0-9.]+\s[a-zA-Z_0-9.]+@[a-zA-Z_0-9.]+\s"
Lg Grizzly
Danke ChrisB, Kai345 und Felix Riesterer
Es lag an den Delimiter ich hab nach gelesen worum es sich dabei handelt und siehe da mit $suchen"#[a-zA-Z]#" funktioniert es
... nach gelesen ...
... im nach hinein ...
... test zwecken ...
Ich will nicht pingelig sein aber zusammen mit den anderen Fehlern wird dein Text langsam schwer lesbar. Frag dich doch mal, was das, was Du da getrennt schreibst, eigentlich sein soll.