WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik



Im Homepage und Webhosting-Forum --- regulärer Ausdruck -> nach $ suchen

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.

Forum » PHP & MySQL » regulärer Ausdruck -> nach $ suchen - 30 Mai 2024 Antworten
im Forum für Webhosting Homepage gefunden:
regulärer Ausdruck -> nach $ suchen
Tommmy
Pixelschubser
Threadstarter




Beiträge: 16

Huhu Leuts!

Also ich habe ein Problem, ich würde gern in einer Zeichenkette nach bestimmten Zeichen suchen lassen, darunter ist auch das "Dollarzeichen" ($).
Ich möchte, dass sobald eines der aufgeführen Zeichen gefunden wurde, die Funktion preg_match true zurück gibt. Mein Suchmuster sieht bis jetzt so aus:

1:
"[;|<|>|\'|\"|\$]"


Das Problem ist nur, dass bei diesem Suchmuster leider bei jeden String ein "Erfolg" vermeldet wird (auch wenn keins der Zeichen enthalten ist) ...
Lasse ich das |\$ weg, dann klappt alles hervorragend, also sobald ein < oder > oder ' oder " oder ; im String sind, dann wird ein "Erfolg" vermeldet, ansonsten nicht ...

Ich hatte schon die Idee einfach das Dollarzeichen mit HIlfe seines ANSI-Codes anzugeben, doch ich konnte bisher leider nciht herausfinden wie ich das machen kann ...

Ich hoffe mir kann jmd helfen, danke!

  Profil   E-Mail   Editieren   Zitieren
chip
Foren-Team




Beiträge: 419

Um einfach festzustellen, ob ein Zeichen in einem String vorhanden ist, eignet sich die Funktion strpos() besser, da sie wesentlich schneller ist.

---

  Profil   Website   Editieren   Zitieren
raiserle
Mausakrobat




Beiträge: 172

1: 
2: 
3: 
4: 
5:
\' "';
echo preg_match("#[;<>'\"\$]+#",$str);
?>


und strpos ist keinesfalls schneller bei 6 zeichen
aber um auf den regex zu kommen was soll das | immer da drin?
du gibst doch über [...] schon eine zeichenklasse an und nen + hinten dran sagt 1 oder mehr zeichen davon. das | (oder) macht bei sochen sachen sinn
(https?|ftp|xxx):/.... oder wo auch immer es gebraucht wird

gruß

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   Editieren   Zitieren
chip
Foren-Team




Beiträge: 419

raiserle schrieb am 18.12.2007 14:41
und strpos ist keinesfalls schneller bei 6 zeichen


Das will ich sehen, sonst glaub ich's dir nicht . strpos() führt eine einfache Zeichensuche durch, während bei preg_match() erst die Regexp-Engine "angeworfen" werden muss.
Meiner Meinung nach sollte das deutlich schneller sein.


---

  Profil   Website   Editieren   Zitieren
Tommmy
Pixelschubser
Threadstarter




Beiträge: 16

huj, großes dankeschön ihr beiden!

@ raiserle, also dein regulärer Ausdruck funktioniert tadellos, obwohl ich jetzt so spontan eigentlich bis auf die |-Zeichen kaum nen Unterschied zu meiner Variante feststellen kann ... naja ich bin ja der Noob und du der Pro, also wirds schon so sein :D

@ chip, also die Funktion, die du vorgeschlagen hast, klingt auch gut und ich kann mir auch vorstellen, dass die schneller ist, aber ähm, wie kannn ich mit der Fkt. nach mehreren Zeichen suchen, oder muss ich die Fkt 6 mal für 6 Zeichen aufrufen? Das wär nämlich nervig ...

also vielen Dank schonma!!!!

Diese Nachricht wurde geändert von: Tommmy
  Profil   E-Mail   Editieren   Zitieren
chip
Foren-Team




Beiträge: 419

Ja, du musst die Funktion sechs Mal aufrufen für sechs Zeichen. Aber da kann man sich auch schöne Funktionen basteln, die mehrere Zeichen suchen.

Kleiner Tipp: Mit array_map() oder array_walk() sollte es gehen, wobei du als Array einfach deine Zeichen verwendest.

---

  Profil   Website   Editieren   Zitieren
raiserle
Mausakrobat




Beiträge: 172

@ chip:

Test 3 mal gemacht.
Beim ersten Aufruf der Seite, ist strpos def langsamer... 2-4 ms
wobei preg_match immer um die 0.7 - 1.2 ms liegt ...

(Testumgebung Text mit 415 Zeichen das $-Zeichen steht an der 103 Stelle.)
(das $-Zeichen ist bei mir im letzten Oder-block bei strpos-Prüfung)

Und warum auch denk bitte an die 6 mal, es seid denn es wird gleich im ersten Oder-block das Zeichen gefunden . Also musste er in meinem Beispiel erst
mit 5 Zeichen von Anfang bis Ende durchgehen, bis dann das $ geprüft wurde.

Beim 2ten mal des Aufrufs ist dann aber wirklich strpos schneller (Annahme, liegt im Speicher)

Gruß Henrik

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   Editieren   Zitieren
chip
Foren-Team




Beiträge: 419

OK, im ungünstigsten Fall ist strpos() wirklich langsamer. Aber, in den meisten Fällen (also nicht bei "synthetischen" Tests) ist strpos() durchaus schneller als preg_match().

---

  Profil   Website   Editieren   Zitieren
raiserle
Mausakrobat




Beiträge: 172

Da gebe ich Dir Recht.
Ich habe auch nicht gesagt, dass preg_match schneller ist als strpos, bzw wollte das nicht so formulieren (sry).

Aber in diesem Fall, war mein Gedanke schon bei, "Was ist, wenn 6 mal strpos aufgerufen werden muss, weil nie ein Zeichen drin vor kommt".
Das würde ja bedeuten, dass der komplette String von forn bis hinten 6 mal durchlaufen wird und dies war in meinen Gedanken eher langsamer, als ein regex anzusetzen.

Der Test hats ja auch gezeigt, was aber auch nur beim ersten Aufruf von strpos stimmt, wenn man gleich danach nochmal versucht, sind die Zeiten deutlich schneller als preg_match.

Ähm und noch was zu dem Pattern, das + kann dort auch weg, er soll ja bei einem von den 6 Zeichen eh abbrechen.


Gruß Henrik

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   Editieren   Zitieren
chip
Foren-Team




Beiträge: 419

Dann sind wir uns ja einig ;)

---

  Profil   Website   Editieren   Zitieren
 

Antworten
Forum » PHP & MySQL » regulärer Ausdruck -> nach $ suchen

Aktuelle Beiträge zur Hilfe im Forum für Homepage - regulärer Ausdruck -> nach $ suchen im Forum Homepage Hosting AntwortenLetztes Posting
Rangliste (Ohne Mysql) (Kompliziertes Ordner System)
in "PHP & MySQL"
3 19.07.2021 06:00 von newtopblog
kleines problem mit phpadmin
in "PHP & MySQL"
5 11.04.2021 22:22 von Zavylon
Counter mit PHP
in "PHP & MySQL"
4 22.03.2021 16:29 von Robeni
Fehlermeldung beim Importieren der Datenbank in phpmyadmin
in "PHP & MySQL"
0 02.08.2019 22:14 von iFuchs
CMS für Online Shop
in "PHP & MySQL"
18 26.05.2019 13:29 von raiserle
Regestrierungproblem
in "PHP & MySQL"
3 28.11.2018 13:20 von norbertofahey
PHP Datum ausgeben?
in "PHP & MySQL"
1 19.10.2018 10:04 von Klaus1973
PHP befehl ausführen
in "PHP & MySQL"
11 16.08.2018 09:08 von Klaus1973
Visual Composer selber programmieren?
in "PHP & MySQL"
0 22.01.2017 23:45 von Redji
php preg_replace_callback für dynamischen Link
in "PHP & MySQL"
0 05.07.2016 11:02 von Rm21
PHP Code verschlüsseln
in "PHP & MySQL"
20 21.02.2016 21:25 von Kilian1
migrierter WP-Blog läuft nicht ...
in "PHP & MySQL"
0 04.02.2016 02:01 von Oxygon
Fertige PHP Scripte für Ihre Homepage
in "PHP & MySQL"
0 16.12.2015 12:02 von PHP-Script-Shop



Besucher : 8002552    Heute : 805     Gestern : 347     Online : 8     30.5.2024    20:48      0 Besucher in den letzten 60 Sekunden        
Nach oben