2009-08-16 8 views
0

Ne va pas mentir, je suis terrible à regex.Regex Question PHP

Comment pourrais-je faire ce gars:

$string = '>Data 1-23</a>'; 
$string = '>Datkl3</a>'; 
$string = '>RA Ndom</a>'; 

et retirez le « Data 1-23 » à l'intérieur de la chaîne ci-dessus en utilisant regex? Et si j'en ai plusieurs, comment pourrais-je mettre toutes les chaînes correspondantes dans un tableau?

+0

Il serait utile si vous avez donné plusieurs exemples de chaînes et le résultat que vous recherchez. Je veux dire, donné cet exemple unique, faire un $ string = ~ s /> // g; Il semble que cela suffirait, mais je doute que ce soit ce que vous voulez. –

+0

Merci, c'était une erreur stupide en oubliant cela, même si je connais le code LOL. Merci encore – James

+0

Essayez-vous de retirer la chaîne littérale "Data 1-23", ou obtenir le contenu de toutes les balises "a"? – TheJacobTaylor

Répondre

3
<?php 
    $string = ">Data 1-23</a>"; 
    $pattern = '/>([^<]*)</a>/'; 
    preg_match($pattern, $subject, $matches); 
    print_r($matches); 
?> 

Doit vous donner ce que vous voulez, autant que je comprends.

5

Si vous recherchez le texte dans les hyperliens, votre meilleur pari est SimpleHTMLDom. Voici un exemple rapide:

$html = file_get_html('http://www.amazon.com/'); 
foreach($html->find('a') as $element) 
    echo $element->innertext . '<hr/>'; 

Parsing l'arbre DOM donne des résultats beaucoup plus fiables qu'un simple regexp

Hope that helps!