2017-04-11 4 views
0

J'ai un site web avec, disons 2000 pages. Certains d'entre eux sont pour les produits et d'autres sont pour les catégories. Les URL sont comme ceci: pour les produits https://www.website.com/product-brand-name-p254.html et pour les catégories https://www.website.com/category-name-c44.html. Comment puis-je filtrer les URL de sorte qu'à la fin je ne peux obtenir que l'URL pour les catégories. J'ai fait ce pcreFiltrer les URL avec PHP PCRE

/https:\/\/w{3}.website.com\/[a-z]*-[a-z]*-[c]{1}[0-9]*.html/g 

Il semble que cela fonctionne et trouve seulement l'URL pour les catégories. Je sais que je devrais utiliser preg_match_all(); pour les vérifier tous mais ma question est la suivante: Comment puis-je obtenir tous les noms d'URL afin que je puisse les vérifier avec cette fonction, ou est-ce possible? Je vous remercie!

+1

Comment est-ce que cette expression regex '[a-z] - [a-z]' correspond 'category-name'? – revo

+0

'Comment puis-je obtenir tous les noms des URL' nous qui vous demandera, quelle est votre source de données? – hassan

+0

Je ne suis pas sûr de ce que vous entendez par "obtenir tous les noms d'URL". Si vous parlez de capturer le nom de la catégorie, mettez cette partie de l'expression entre parenthèses. Cette partie sera renvoyée en tant que tableau séparé. – alanlittle

Répondre

0

J'ai finalement résolu le problème. J'ai dû me renseigner sur certaines fonctions que je ne connaissais pas. Le code, est en bas ci-dessous:

$location = 'dir'; 
$files = scandir($location); 
$files = array_diff(scandir($location), array('.', '..')); 
$matches = preg_grep('/pattern/', $files); 
$results = implode("<br>", $matches); 
echo $results; 

Je vais essayer de mettre cela dans une fonction.