PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Regulärer Ausdruck - Hilfe! (https://www.php-resource.de/forum/php-developer-forum/106149-regulaerer-ausdruck-hilfe.html)

Chriss 24-01-2018 16:03

Regulärer Ausdruck - Hilfe!
 
Hallo PHP-Profis,

leider habe ich zwei Probleme mite einem regulären Ausdruck, und hoffe, es kann mir hier jemand helfen.

Darum geht es:

aus folgendem, exemplarischen URL möchte ich die ID und Seite auslesen:

$url = "http://www.domain.de/verzeichnis1/dies-ist-eine-test-URL-12345-34.html";

$id = preg_replace("/\/verzeichnis1\/.*-([0-9]{1,7})-([0-9]{0,3}).htm|html/", "$1 : $2", $url);

echo $id;

ergibt das gewünschte Ergebnis: 12345 : 34


Nun zu meinen Fragen:

1.) Wenn ich nur die ID auslesen möchte, und die 2. Zeile wie folgt ändere:

$id = preg_replace("/\/verzeichnis1\/.*-([0-9]{1,7})-([0-9]{0,3}).htm|html/", "$1", $url);

ist das Ergebnis bei echo $id folgendes:

123451

Wo kommt die "1" hinten dran her? Wie werde ich sie los?



2. Das Suchmuster müsste noch erweitert werden, weil die zu durchsuchenden URLs entweder eine Seitenzahl enthalten oder nicht! D. h. bei einem exemplarischen URL

$url = "http://www.domain.de/verzeichnis1/dies-ist-eine-test-URL-12345.html";

sollte die ID ausgegeben werden und "0" für Seite.

Wie müsste sich also der preg_replace Befehl ändern, damit beide Arten von URLs erkannt und die ID bzw. Seite ausgelesen werden?

ID und Seite können jeweils nur Zahlen sein.

Vielen Dank und beste Grüße,
Chriss

Kropff 24-01-2018 18:43

Zum Auslesen nimmt man preg_match
PHP-Code:

$url "http://www.domain.de/verzeichnis1/dies-ist-eine-test-URL-12345-34.html";
preg_match("/\/verzeichnis1\/.*-([0-9]{1,7})-([0-9]{0,3}).html/"$url$hit);
print_r($hit); 

Gruß
Peter

Chriss 24-01-2018 20:27

Vielen Dank Peter, Problem 1 ist gelöst.

Jetzt fehlt mir nur noch die Abänderung des Suchmusters, so dass es ein Ergebnis gibt, auch wenn keine "Seitenzahl" im URL vorhanden ist.

Gruß,
Chriss

Chriss 25-01-2018 10:33

Habe das Problem nun gelöst. Ein passender regulärer Ausdruck ist mir allerdings nicht einfallen... So habe ich es über zwei Abfragen (jeweils mit regulärem Ausdruck) gelöst, einmal mit dem Parameter "Seite" und einmal ohne. Wenn man die Ergebnisse vergleicht, weiß man, ob es den Parameter "Seite" gibt oder nicht. Also eine pragmatische Lösung, die funktioniert.

Gruß,
Chriss


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:27 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG