Manche reguläre Ausdrücke funktionieren andere nicht

Alles, was PHP betrifft, kann hier besprochen werden.

Manche reguläre Ausdrücke funktionieren andere nicht

Postby Patzor » 01. April 2005 09:13

Hi,
ich habe gestern ein paar Skripts mit regulären Ausdrücken geschrieben.
Ich habe mit folgendem angefangen:
Code: Select all
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/transitional.dtd">
<html>
<head>
<title>BB Code umwandeln</title>
</head>
<body>
<?php

if (isset($_POST[sub])){

//Wegen PHP- register_globals="on" / "off"

$text = $_POST[text];

//Folgende 5 Pattern wandeln [URL] bzw [/URL] um.

$text = preg_replace("/\[url\]http:\/\/(.*?)\[\/url\]/si",
                                 "<a href=\"http://\\1\" target=\"_blank\">\\1</a>", $text);
$text = preg_replace("/\[url\] http:\/\/(.*?)\[\/url\]/si",
                                 "<a href=\"http://\\1\" target=\"_blank\">\\1</a>", $text);
$text = preg_replace("/\[url\](.*?)\[\/url\]/si",
                                 "<a href=\"http://\\1\" target=\"_blank\">\\1</a>", $text);
$text = preg_replace("/\[url=http:\/\/(.*?)\](.*?)\[\/url\]/si",
                                 "<a href=\"http://\\1\" target=\"_blank\">\\2</a>", $text);
$text = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/si",
                                   "<a href=\"http://\\1\" target=\"_blank\">\\2</a>", $text);

echo "$text \n <br /><br /><br />";
echo "<a href=\"$_SERVER[PHP_SELF]\">Zurück zum Formular</a> \n <br />";

} else {
?>
<p>[URL=http://www.link.de]Link[/URL]</p>
<form action="bb_code_umwandeln.php" method="post">
<textarea name="text" cols="50" rows="10" /></textarea><br />
<input type="submit" value="Abschicken" name="sub"/>
<?php
}
?>
</form>
</body>
</html>

Das hat geklappt.
Aber folgendes ging nicht:
Code: Select all
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/transitional.dtd">
<html>
<head>
<title>PLZ (D) testen</title>
</head>
<body>
<?php

if (isset($_POST[submit])){

//Wegen PHP- register_globals="on" / "off"

$text = $_POST[text];

//Folgende Patter überprüft ob die PLZ 5 Ziffer hat.

$text = preg_replace("/^[0-9]{5}$/");
                       
echo "$text \n <br /><br /><br />";
echo "<a href=\"$_SERVER[PHP_SELF]\">Zurück zum Formular</a> \n <br />";

} else {
?>
<form action="plz.php" method="post">
<input type="text" name="text" /><br />
<input type="submit" value="Abschicken" name="submit"/>
<?php
}
?>
</form>
</body>
</html>

Es erscheint:
Warning: Wrong parameter count for preg_replace() in C:\xampplite\htdocs\regulaere ausdruecke\plz.php on line 17

An was kann das liegen?
Folgendes ging auch nicht:
Code: Select all
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/transitional.dtd">
<html>
<head>
<title>E-Mail Check</title>
</head>
<body>
<?php

if (isset($_POST[submit])){

//Wegen PHP- register_globals="on" / "off"

$text = $_POST[text];

//Folgende Patter überprüft ob die E-Mailadressen korrekt ist.

$text = preg_replace("/[\.a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i/");
                       
echo "$text \n <br /><br /><br />";
echo "<a href=\"$_SERVER[PHP_SELF]\">Zurück zum Formular</a> \n <br />";

} else {
?>
<form action="plz.php" method="post">
<input type="text" name="text" /><br />
<input type="submit" value="Abschicken" name="submit"/>
<?php
}
?>
</form>
</body>
</html>

Da kommt die gleiche Fehlermeldung.
Patzor
 
Posts: 6
Joined: 01. April 2005 08:58

Postby Wiedmann » 01. April 2005 12:51

Code: Select all
$text = preg_replace("/^[0-9]{5}$/");
...
$text = preg_replace("/[\.a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i/");

Warning: Wrong parameter count for preg_replace() in C:\xampplite\htdocs\regulaere ausdruecke\plz.php on line ...

Die Fehlermeldung ist doch eindeutig. *grübel*

Du kennst das PHP-Manual?
PHP-Manual wrote:mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit [, int &count]] )
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Patzor » 01. April 2005 14:23

Wiedmann wrote:Die Fehlermeldung ist doch eindeutig. *grübel*

Du kennst das PHP-Manual?
PHP-Manual wrote:mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit [, int &count]] )


Doch, kenne ich.
Patzor
 
Posts: 6
Joined: 01. April 2005 08:58

Postby Wiedmann » 01. April 2005 14:29

PHP-Manual wrote:mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit [, int &count]] )

Doch, kenne ich.

Und wo ist dann das Problem?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Patzor » 01. April 2005 14:54

Bin nun am Lernen. Und habe halt das Skript abgetippt und habe dann gedacht- weil der sich nicht irrt- dass vielleicht bei mir ein Modul deaktiviert ist, weil er die Funktion nicht kennt.
Patzor
 
Posts: 6
Joined: 01. April 2005 08:58

Postby Wiedmann » 01. April 2005 15:17

weil er die Funktion nicht kennt.

Dann würde kommen: "Unknown Function preg_replace()"

Du benuzt die vorhandene Funktion halt nur falsch...
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Patzor » 01. April 2005 15:26

Ja, jetzt wo du es sagst. :oops:
Patzor
 
Posts: 6
Joined: 01. April 2005 08:58


Return to PHP

Who is online

Users browsing this forum: No registered users and 16 guests