2011-11-04 2 views
0

Ex: Found: 84 Displaying: 1 - 84PHP: s'il vous plaît aider à l'utilisation preg_match

Je veux sortir le nombre 84 entre Found et Displaying avec preg_match mais je suis très mal à l'expression régulière. Savez-vous quel bon tutoriel pour apprendre l'expression régulière? Je ne peux pas trouver un bon sur Google.

Modifierinséré des commentaires ci-dessous:

Je simplifie tout mon problème ici. Le vrai problème que je vais trouver dans une page HTML complète telle que google search. Tu sais ce que je veux dire, n'est-ce pas?

+3

Vous devez avoir trouvé http://www.regular-expressions.info/ –

+0

_Maintenant vous avez deux problèmes ... _ http://www.codinghorror.com/blog/2008/06/regular-expressions-now -you-have-two-problems.html :) –

Répondre

3

Si votre entrée sera toujours dans le même format, il n'y a pas besoin d'utiliser des expressions régulières. Au lieu de cela, juste diviser la chaîne sur les espaces:

// explode() on spaces, returning at most 2 array elements. 
$parts = explode(" ", "Found: 84 Displaying: 1 - 84", 2); 
echo $parts[1]; 

Mise à jour Si vous voulez vraiment vraiment vraiment utiliser preg_match() pour cela, voici comment. Ceci n'est pas recommandé pour une application aussi simple.

// Array will hold matched results 
$matches = array(); 

$input = "Found: 84 Displaying: 1 - 84"; 

// Your regex will match the pattern ([0-9]+) (one or more digits, between Found and Displaying 
$result = preg_match("/^Found: ([0-9]+) Displaying/", $input, $matches); 

// See what's inside your $matches array 
print_r($matches); 

// The number you want should be in $matches[1], the first subgroup captured 
echo $matches[1]; 
+0

Hors sujet: Je pense que beaucoup de questions "regex" pourraient être répondues de manière adéquate en divisant et en trouvant le résultat. –

+0

bonne idée mais je veux toujours savoir comment utiliser preg_match aussi :-) Merci. – Quy

+2

@JaredFarrish Si j'avais un dollar à chaque fois que j'ai répondu 'explode()' à une question regex ... (J'ai 10-20 rep pour chacun, mais ce n'est pas pareil :)) –

1

regex assez simple, j'inclus du code PHP qui l'utilise:

<?php 
preg_match("/(\d+)/", "Found: 84 Displaying: 1 - 84", $matches); 
//$matches[0] should have the first number, i.e. 84 
echo $matches[0]; // outputs "84" 
?> 

http://www.regular-expressions.info/ a une très bonne information sur la façon d'écrire des expressions régulières. Edit: comme mentionné, les expressions régulières sont trop lourdes dans ce cas, tokenizing fonctionne très bien.

+0

fonctionne très bien. Merci – Quy

Questions connexes