2012-12-02 4 views
0

J'ai un texte avec les liens "a href" et "[link]". Je veux preg_split ce texte et ont tableau où sur [i] Je trouve des liensPHP - regexp pour diviser les URL

Exemple:

My text <a href="www.example.com">text</a> this continues [link=http://www.second.com]link[/link] 

=> 

[0] My text 
[1] <a href="www.example.com">text</a> 
[2] this continues 
[3] [link=http://www.second.com]link[/link] 

Comment dois-je écrit mon regexp?

+0

Ne pas pa rse HTML avec des expressions régulières. Utilisez [le module DOM fourni avec PHP] (http://php.net/manual/fr/book.dom.php). Les expressions régulières ne sont pas toujours l'outil à utiliser, même si le problème implique du texte. –

Répondre

1

(.+)(\<a.+\/a>)(.+)(\[link.+\/link])

produit

Match groups: 
1. My text 
2. <a href="www.example.com">text</a> 
3. this continues 
4. [link=http://www.second.com]link[/link] 

http://rubular.com/r/8PEUbDX9zr

0

Quelque chose comme ça je suppose. En supposant que tout est sur la même ligne ..

/\<a\.*[link=(.*)\].*$/i 
0
<?php 
$text = 'My text <a href="www.example.com">text</a> this continues [link=http://www.second.com]link[/link]'; 


preg_match_all('/(?:href="|link=)(.*?)(?:"|\])/is', $text, $links); 
// $links[1] = array('link', 'link', 'link'...) 
$links = $links[1]; // $links = array('link'...) 
?> 

devrait fonctionner :)

+0

Il retourne seulement [0] => www.example.com –

+0

Si je copie mon exemple et faire couler tout droit et var_dump liens $ Je reçois [0] => "www.example.com" [1] => "http://www.second.com" Bien sûr, vous utilisez preg_match_all? – Jesperhag

+0

Étrange .. Si je copie et colle ton exemple, je n'ai que ce que j'ai posté ... et même ta sortie est différente de ce dont j'avais besoin –