Дуня Кулакова | [email]papa@karlo.com[/email]
Владимир Жириновский
Джордж Буш | [email]bush@george.com[/email]
Помогите составить регулярное выражение
Мне необходимо составить регулярное выражение.
Пример:
Есть html страница с подобным содержанием:
[HTML]
<p align="right"><strong><a href="mailto:papa@karlo.com">Дуня Кулакова</a>,<br />Владимир Жириновский,<br><a href="mailto:bush@george.com">Джорж Буш</a>, Руководитель: <a href="mailto:pupkin@vasya.su">Пупкин Василий</a></strong><br>
[/HTML]
Нужно вытянуть в массив только пользователей без руководителя и привести к виду Имя Фамилия | E-mail. Тех, у кого e-mail'а нет, сохраняем без оного.
Т.е. в идеале должно быть так:
Код:
В строке могут быть, а могут и не быть тэги <br /> и <br> (без слеша). Руководителя также нужно искоренить.
Что-то я по-всякому пробую, но никак не выходит :(. Знаю я синтаксис регулярок очень плохо. Подскажите пожалуйста.
Код:
<?php
function getVal($start,$end,&$string){
$pre_value=@explode($start,$string);
$value=@explode($end,$pre_value[1]);
return $value[0];
}
$string='<p align="right"><strong><a href="mailto:papa@karlo.com">Дуня Кулакова</a>,<br />Владимир Жириновский,<br><a href="mailto:bush@george.com">Джорж Буш</a>, Руководитель: <a href="mailto:pupkin@vasya.su">Пупкин Василий</a></strong><br>';
preg_match_all("/(\<a\\x20href\=\"mailto\:.+?\"\>)?\w{3,}\\x20\w{3,}(\<\/a\>)?/i",$string,$users);
foreach($users[0] as $n=>$user){
$user_mail=getVal(":","\"",$user);
if(empty($user_mail)){
$user_name=$user;
$user_mail="";
}
else{
$user_name=getVal(">","<",$user);
$user_mail=' | '.$user_mail;
}
echo(($n+1).'. '.$user_name.$user_mail.'<br>');
}
?>
function getVal($start,$end,&$string){
$pre_value=@explode($start,$string);
$value=@explode($end,$pre_value[1]);
return $value[0];
}
$string='<p align="right"><strong><a href="mailto:papa@karlo.com">Дуня Кулакова</a>,<br />Владимир Жириновский,<br><a href="mailto:bush@george.com">Джорж Буш</a>, Руководитель: <a href="mailto:pupkin@vasya.su">Пупкин Василий</a></strong><br>';
preg_match_all("/(\<a\\x20href\=\"mailto\:.+?\"\>)?\w{3,}\\x20\w{3,}(\<\/a\>)?/i",$string,$users);
foreach($users[0] as $n=>$user){
$user_mail=getVal(":","\"",$user);
if(empty($user_mail)){
$user_name=$user;
$user_mail="";
}
else{
$user_name=getVal(">","<",$user);
$user_mail=' | '.$user_mail;
}
echo(($n+1).'. '.$user_name.$user_mail.'<br>');
}
?>
Результат:
[HTML]1. Дуня Кулакова | papa@karlo.com<br>2. Владимир Жириновский<br>3. Джорж Буш | bush@george.com<br>4. Пупкин Василий | pupkin@vasya.su<br>[/HTML]