kostenloser Webspace werbefrei: lima-city


preg_match() Absätze

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    Hallo zusammen,
    ich möchte die Absätze aus einem textarea mit preg_match erlauben. Also wen ein Enter gedrückt wird soll dieser als gültig betrachtet werden.
    Wie kann ich dieses machen?

    Gruß
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. willstdueswissen

    Kostenloser Webspace von willstdueswissen

    willstdueswissen hat kostenlosen Webspace.

    Ich weiß jetzt nicht was du genau meinst, aber vielleicht ist es das ja schon:
    mit
    \n
    bekommst du diese umbrüche.

    Also
    preg_match("/\n/",  ......


    Wenn du was anderes meinst, wären ein paar infos mehr schon besser.
    Am besten ein Beispiel.

    MfG willstdueswissen

    Beitrag zuletzt geändert: 24.6.2014 12:48:09 von willstdueswissen
  4. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    Danke für feine schnelle Antwort.
    meine Syntax lautet
    preg_match('/^[a-zA-Z0-9!?.,:+*\-\ ^°\/\(\)\n\/n]+$/',$string

    wenn ich nun einen Enter eingebe also z.b.
    bla
    bla
    bla

    dann wird ein Fehler ausgegeben. Sobald die Enter weg sind, ist die Fehlermeldung nichtmehr vorhanden.
    Beispiel:
    http://testing.caching-with-web.org/createcache.php
    (liste nicht "wählen" in das Feld irgentwas eintragen -> Weiter -> feld1 mindestens 50 Wörter maximal 200. in die anderen platzhalter einfügen.)
    Sobald du in ein Feld einE nter einfügst kommt die Fehlermeldung

    Gruß
  5. willstdueswissen

    Kostenloser Webspace von willstdueswissen

    willstdueswissen hat kostenlosen Webspace.

    Also ich habe folgendes ausprobiert: http://www.phpliveregex.com/p/5JO
    Und es funktioniert.
    Er erkennt \n als eigenes Zeichen
    Guck es dir mal an
    bei preg_match_all kannst du es am besten erkennen
    Ich weiß nicht wie du deine php funktion aufgebaut hast.
    Da kann ich nichts zu sagen.
    Aber das Regex was ich dir oben gegeben habe (http://www.phpliveregex.com/p/5JO) funktioniert

    Beitrag zuletzt geändert: 24.6.2014 13:23:48 von willstdueswissen
  6. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    ich habe auf der seite geschaut. Ja es funktioniert ABER es werden alle Zeichen als ok - zumindest scheinbar ok - befunden, auch die, die nicht aufgefürt sind.
  7. Magst du erklären, welche Zeichen genau erlaubt sein sollen? Das macht die Sache einfacher ;)
  8. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    es sollen folgende Zeichen erlaubt sein:
    Buchstaben, Zahlen, Lehrzeichen und Absätze sowie ! ? ^ / ( ) + - * : . ,

    Gruß

    Beitrag zuletzt geändert: 24.6.2014 14:20:49 von your-destiny
  9. Unterstriche zufällig auch? Und was ist mit Umlauten und Sonderzeichen wie etwa à?

    ~[\w\p{L}\s!?^/()+\-*:.,]+~g


    Erlaubt

    a-zA-Z0-9_\r\n\t\f!?^/()+-*:., sowie Umlaute und sämtliche Buchstaben aus allen Sprachen.

    Dies
    ist ein Test
    Enthält auch Sonderzeichen in Wörtern, z.B. Smørrebrød
    Matcht <hier> auch nur das Nötigste.


    Beitrag zuletzt geändert: 24.6.2014 14:35:35 von fabo
  10. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    der Code ist ansich sehr gut (Absätze funktionieren) aber es dürfen folgende Zeichen auf keinen Fall erlaubt sein, weil dies die Ausgabesintax zerstören könnte:
    " $ ' % & { [ ] } ´ ` # <> _;~

    sowie fast alle ASKII Sonderzeichen

    Ja umlaute sollen erlaubt sein(waren sie auch) Nein Unterstriche nicht, da man damit Seiteninhalte auslesen könnte.

    Kann deine Syntax so abgeändert werden, dass auch die Zeichen nicht erlaubt sind?
  11. Entferne das \w. Sollte ausreichen und war auch eigentlich unnötig.

    Bei deinem obigen Regex können Umlaute gar nicht möglich gewesen sein.

    Sonderzeichen sind in dem Sinne nicht erlaubt. Lediglich Buchstaben aus sämtlichen Sprachen. Sollte dies nicht gewünscht sein, ersetze das \p{L} durch a-zA-Z0-9öÖäÄüÜß oder a-z0-9öäüß mit dem i-Modifier.

    Beitrag zuletzt geändert: 24.6.2014 16:53:39 von fabo
  12. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    bei
    preg_match('~[\p{a-zA-ZäüößÄÜÖ0-9}\s!?^/()+\-*:.,]+~',utf8_encode($string))
    erscheint die Fehlermeldung:
    Warning: preg_match(): Compilation failed: unknown property name after \P or \p at offset 27 in /www/htdocs/w011e1cb/Geocaching/Testing_Zone/createcache.php on line 105
    Ich werde daraus nicht schlau:confused:
  13. Das \p{ und } gehören da nicht hin:

    ~[\sa-zA-ZäüößÄÜÖ0-9!?^/()+\-*:.,]+~


    Beitrag zuletzt geändert: 24.6.2014 17:43:42 von fabo
  14. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    dadurch werden nun wieder alle Zeichen akzeptiert
  15. Kann ich nicht reproduzieren. Erlaubt sind lediglich

    \r\n\t\fa-zA-z0-9äüößÄÜÖ!?^/()+-*:.,
  16. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    ich finde dies jetzt sehr merkwürdig... ich habe den Code komplett kopiert, wie du ihn angegeben hast. wie du auf http://testing.caching-with-web.org/createcache.phpsehen kannst (zweite Seite) ist dies nicht der Fall?!?

    Gruß
  17. Die Kurzbeschreibung darf nur Buchstaben, Zahlen, Lehrzeichen sowie ! ? ^ / ( ) + - * : . , enthalten und muss 50 bis 200 Wörter enthalten. Es sind 2 Wörter enthalten.

    Cachebeschreibung:
    Die Cachebeschreibung darf nur Buchstaben, Zahlen, Lehrzeichen sowie ! ? ^ / ( ) + - * : . , enthalten.

    Logtext:
    Der Logtext darf nur Buchstaben, Zahlen, Lehrzeichen sowie ! ? ^ / ( ) + - * : . , enthalten.
  18. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    Hast Du die anderen Felder leer gelassen? bei mir siht das so aus http://your-destiny.lima-city.de/Bildschirmfoto%20vom%202014-06-24%2019:47:27.png
  19. Code wäre an dieser Stelle interessant. Denn aktuell lässt sich das Problem nur erraten.
  20. Autor dieses Themas

    your-destiny

    your-destiny hat kostenlosen Webspace.

    hier einmal der Code, der betroffen ist:
    elseif($_POST['step2'])//TODO
    {
    	$cachename = $_POST['cachename'];
    	$cachetyp = $_POST['cachetyp'];
    	
    	
    	$kurzbeschreibung = trim($_POST['kurzbeschreibung']);
    	$cachebeschreibung = trim($_POST['cachebeschreibung']);
    	$logtext = trim($_POST['logtext']);
    	$stationstext = trim($_POST['stationstext']);
    	$stationscounter = trim($_POST['stationscounter']);
    	$fehler = "false";
    
    	if(preg_match('~[\sa-zA-ZäüößÄÜÖ0-9!?^/()+\-*:.,]+~', utf8_encode($kurzbeschreibung)) && str_word_count($kurzbeschreibung) >= "50" && str_word_count($kurzbeschreibung) <= "200" )
    	{
    		$pkurzbeschreibung = "<textarea class ='ok' name ='kurzbeschreibung'>$kurzbeschreibung</textarea>";
    	}
    	else
    	{
    		$fehler = "true";
    		$pkurzbeschreibung = "<textarea class ='eingabefehler' name ='kurzbeschreibung'>$kurzbeschreibung</textarea><b1>Die Kurzbeschreibung darf nur Buchstaben, Zahlen, Lehrzeichen sowie ! ? ^ / ( ) + - * : . , enthalten und muss 50 bis 200 W&ouml;rter enthalten. Es sind " . str_word_count($kurzbeschreibung) . " W&ouml;rter enthalten.</b1>";
    	}
    	
    	if(preg_match('~[\sa-zA-ZäüößÄÜÖ0-9!?^/()+\-*:.,]+~',utf8_encode($cachebeschreibung)))
    	{
    		$pcachebeschreibung = "<textarea class ='ok' name ='cachebeschreibung'>$cachebeschreibung</textarea>";
    	}
    	else
    	{
    		$fehler = "true";
    		$pcachebeschreibung = "<textarea class ='eingabefehler' name ='cachebeschreibung'>$cachebeschreibung</textarea><b1>Die Cachebeschreibung darf nur Buchstaben, Zahlen, Lehrzeichen sowie ! ? ^ / ( ) + - * : . , enthalten.</b1>";
    	}
    	if($cachetyp == "Traditionalcache")
    	{
    	
    		if(preg_match('~[\sa-zA-ZäüößÄÜÖ0-9!?^/()+\-*:.,]+~',utf8_encode($logtext)))
    		{
    			$plogtext = "<textarea class ='ok' name ='logtext'>$logtext</textarea>";
    		}
    		else
    		{
    			$fehler = "true";
    			$plogtext = "<textarea class ='eingabefehler' name ='logtext'>$logtext</textarea><b1>Der Logtext darf nur Buchstaben, Zahlen, Lehrzeichen sowie ! ? ^ / ( ) + - * : . , enthalten.</b1>";
    		}
    	
    	}
    	else
    	{
    	
    		if(preg_match('/^[a-zA-ZäüößÄÜÖ0-9!?.,:+*\-\ \^°\/\(\)\n]+$/',utf8_encode($stationstext)))
    		{
    			$pstationstext = "<textarea class ='ok' name ='stationstext'>$stationstext</textarea>";
    		}
    		else
    		{
    			$fehler = "true";
    			$pstationstext = "<textarea class ='eingabefehler' name ='stationstext'>$stationstext</textarea><b1>Der Stationstext darf nur Buchstaben, Zahlen, Lehrzeichen sowie !?^°/()+*:., enthalten.</b1>";
    		}
    	
    	}
    	
    	if($fehler == "true")
    	{
    	
    
    		
    	
    		echo "<form action='$url' method='post'>
    		<input type='hidden' value='$cachename'name ='cachename'>
    		<input type='hidden' value='$cachecode'name ='cachecode'>
    		<input type='hidden' value='$cachetyp'name ='cachetyp'>
    		
    		Kurzbeschreibung:<br />$pkurzbeschreibung<br /><br />
    		Cachebeschreibung:<br />$pcachebeschreibung<br /><br />";
    		
    		if($cachetyp == "Traditionalcache")
    		{
    		
    			echo "Logtext:<br />$plogtext<br /><br />";
    		
    		}
    		else
    		{
    		
    			echo "Station $stationscounter:<br />$pstationstext<br /><br />";
    		
    		}
    		
    		echo"	
    		<input type='submit' value='Weiter'name ='step2'></form>
    		";
    	
    	}
    	else//TODO
    	{
    		$kurzbeschreibung = nl2br ( $kurzbeschreibung );
    		$cachebeschreibung = nl2br ( $cachebeschreibung );
    		$logtext = nl2br ($logtext);
    		$stationstext = nl2br ($stationstext);
    		
    		
    		echo"<form action='$url' method='post'>
    		<input type='hidden' value='$cachename'name ='cachename'>
    		<input type='hidden' value='$cachetyp'name ='cachetyp'>
    		
    		<input type='hidden' value='$kurzbeschreibung' name ='kurzbeschreibung'>
    		<input type='hidden' value='$cachebeschreibung' name ='cachebeschreibung'>
    		Cachecode (sofern bereits vorhanden):<br /><input type='text' name ='cachecode'><br /><br />
    		";
    		
    		if($cachetyp == "Traditionalcache")
    		{
    			$stationscounter = "1";
    			echo"Stationscode (falts gew&uuml;ntscht):<br /><input type='text' name ='stationscode'><br /><br />";
    			code();
    			echo"
    			<input type='hidden' value='$logtext'name ='logtext'>
    			<input type='hidden' value='$stationscounter'name ='stationscounter'><br /><br />
    			<input type='submit' name ='erstellen' value='Erstellen'>
    			";	
    		}
    		else
    		{
    			echo"Stationscode (falts gew&uuml;ntscht):<br /><input type='text' name ='stationscode'><br /><br />";
    			code();
    			echo"<input type='hidden' value='$stationscounter'name ='stationscounter'>
    			<input type='hidden' value='$stationstext'name ='stationstext'><br /><br />
    			
    			<input type='submit' name ='erstellen' value='Erstellen'>
    			";
    		}
    		
    	}
    	
    
    
    }

    es handelt sich gleich um die ersten If / else Bedingungen
  21. Versuchs damit...

    else if(isset($_POST['step2'])) { //TODO
    	if (!isset($_POST['cachename']) || !isset($_POST['cachename']) || !isset($_POST['cachename']) || !isset($_POST['cachename']) || !isset($_POST['cachename']) || !isset($_POST['cachename']) || !isset($_POST['cachename'])) {
    		die('Ein unbekannter Fehler ist aufgetreten');
    	}
    
    	$cachename= $_POST['cachename'];
    	$cachetyp = $_POST['cachetyp'];
    	$kurzbeschreibung = trim($_POST['kurzbeschreibung']);
    	$cachebeschreibung = trim($_POST['cachebeschreibung']);
    	$logtext = trim($_POST['logtext']);
    	$stationstext = trim($_POST['stationstext']);
    	$stationscounter = intval($_POST['stationscounter']);
    	$fehler = false;
    
    	if (!preg_match('~^[^\sa-zA-ZäüößÄÜÖ0-9!?^/()+\-*:.,]+$~', utf8_encode($kurzbeschreibung)) || str_word_count($kurzbeschreibung) < 50 && str_word_count($kurzbeschreibung) > 200) {
    		$fehler = true;
    		$pkurzbeschreibung = "<textarea class ='eingabefehler' name='kurzbeschreibung'>" . $kurzbeschreibung . "</textarea><b1>Die Kurzbeschreibung darf nur Buchstaben, Zahlen, Leerzeichen sowie ! ? ^ / ( ) + - * : . , enthalten und muss 50 bis 200 W&ouml;rter enthalten. Es sind " . str_word_count($kurzbeschreibung) . " W&ouml;rter enthalten.</b1>";
    	}
    	else {
    		$pkurzbeschreibung = "<textarea class ='ok' name='kurzbeschreibung'>" . $kurzbeschreibung . "</textarea>";
    	}
    
    	if (!preg_match('~^[^\sa-zA-ZäüößÄÜÖ0-9!?^/()+\-*:.,]+$~', utf8_encode($cachebeschreibung))) {
    		$fehler = true;
    		$pcachebeschreibung = "<textarea class ='eingabefehler' name='cachebeschreibung'>$cachebeschreibung</textarea><b1>Die Cachebeschreibung darf nur Buchstaben, Zahlen, Leerzeichen sowie ! ? ^ / ( ) + - * : . , enthalten.</b1>";
    	}
    	else {
    		$pcachebeschreibung = "<textarea class ='ok' name='cachebeschreibung'>" . $cachebeschreibung . "</textarea>";
    	}
    
    	if($cachetyp == 'Traditionalcache') {
    		if (!preg_match('~^[^\sa-zA-ZäüößÄÜÖ0-9!?^/()+\-*:.,]+$~', utf8_encode($logtext))) {
    			$fehler = true;
    			$plogtext = "<textarea class ='eingabefehler' name='logtext'>" . $logtext . "</textarea><b1>Der Logtext darf nur Buchstaben, Zahlen, Leerzeichen sowie ! ? ^ / ( ) + - * : . , enthalten.</b1>";
    		}
    		else {
    			$plogtext = "<textarea class ='ok' name='logtext'>" . $logtext . "</textarea>";
    		}
    
    	}
    	else {
    		if (!preg_match('~^[^\sa-zA-ZäüößÄÜÖ0-9!?^/()+\-*:.,]+$~', utf8_encode($stationstext))) {
    			$fehler = true;
    			$pstationstext = "<textarea class ='eingabefehler' name='stationstext'>" . $stationstext . "</textarea><b1>Der Stationstext darf nur Buchstaben, Zahlen, Leerzeichen sowie !?^°/()+*:., enthalten.</b1>";
    		}
    		else {
    			$pstationstext = "<textarea class ='ok' name='stationstext'>" . $stationstext . "</textarea>";
    		}
    
    	}
    
    	if ($fehler) {
    		echo "<form action='" . $url . "' method='post'>
    		<input type='hidden' value='" . $cachename . "' name='cachename'>
    		<input type='hidden' value='" . $cachecode . "' name='cachecode'>
    		<input type='hidden' value='" . $cachetyp . "' name='cachetyp'>
    
    		Kurzbeschreibung:<br />" . $pkurzbeschreibung . "<br /><br />
    		Cachebeschreibung:<br />" . $pcachebeschreibung . "<br /><br />";
    
    		if ($cachetyp == "Traditionalcache") {
    			echo "Logtext:<br />" . $plogtext . "<br /><br />";
    
    		}
    		else {
    			echo "Station " . $stationscounter . ":<br />" . $pstationstext . "<br /><br />";
    		}
    
    		echo '<input type="submit" value="Weiter" name="step2"></form>';
    	}
    	else { //TODO
    		$kurzbeschreibung = nl2br($kurzbeschreibung);
    		$cachebeschreibung = nl2br( $cachebeschreibung);
    		$logtext = nl2br($logtext);
    		$stationstext = nl2br($stationstext);
    
    		echo "<form action='" . $url . "' method='post'>
    		<input type='hidden' value='" . $cachename . "' name='cachename'>
    		<input type='hidden' value='" . $cachetyp . "' name='cachetyp'>
    
    		<input type='hidden' value='" . $kurzbeschreibung . "' name='kurzbeschreibung'>
    		<input type='hidden' value='" . $cachebeschreibung . "' name='cachebeschreibung'>
    		Cachecode (sofern bereits vorhanden):<br /><input type='text' name='cachecode'><br /><br />";
    
    		if ($cachetyp == 'Traditionalcache') {
    			$stationscounter = 1;
    			echo 'Stationscode (falts gew&uuml;ntscht):<br /><input type="text" name="stationscode"><br /><br />';
    
    			code();
    
    			echo "<input type='hidden' value='" . $logtext . "' name='logtext'>
    			<input type='hidden' value='" . $stationscounter . "' name='stationscounter'><br /><br />
    			<input type='submit' name='erstellen' value='Erstellen'>";
    		}
    		else {
    			echo 'Stationscode (falts gew&uuml;ntscht):<br /><input type="text" name="stationscode"><br /><br />';
    
    			code();
    
    			echo "<input type='hidden' value='" . $stationscounter . "' name='stationscounter'>
    			<input type='hidden' value='" . $stationstext . "' name='stationstext'><br /><br />
    			<input type='submit' name='erstellen' value='Erstellen'>";
    		}
    
    	}
    }
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!