preg_replace внутренняя ссылка

как мне поступить, если я хочу preg_replace href, но только если он мой собственный?

$a = 'href="http://mysite.com/?s=Bananas&lang=en"';
$host = 'http://mysite.com';
$a = preg_replace('#href="'.$host.'\/?[(s|p)]=([.*?])&lang=([.*?])"#e','href="index.php#$1\/$2\\lang\/$3"',$a);
//The result I want:
echo  $a;
//Becomes href="http://mysite.com/#s/Bananas\\lang/en"

Но что я делаю неправильно? Этот regex-синтаксис очень сложен...


person maxxie    schedule 13.07.2011    source источник
comment
Чего вы именно хотите? Пожалуйста, напишите вывод, который вы хотите.   -  person Chintan    schedule 13.07.2011
comment
Это: href="http://mysite.com/#s/Bananas\\lang/en"   -  person maxxie    schedule 13.07.2011
comment
НЕ используйте модификатор e (PREG_REPLACE_EVAL) в ваших шаблонах регулярных выражений, если вы не уверены на 100%, что делаете...   -  person binaryLV    schedule 13.07.2011


Ответы (1)


<?php
$a = 'href="http://mysite.com/?s=Bananas&lang=en"';
$host = 'http://mysite.com';
echo preg_replace('#href="'.preg_quote($host).'/\?(s|p)=(.*?)&lang=(.*?)"#','href="'.$host.'/#$1/$2\\\\\lang/$3"',$a);
?>

Кажется, это работает для меня :)

person vimist    schedule 13.07.2011