Я пытаюсь заменить HREF условием:PHP заменить HREF условием
http://www.sitea.com/vip: => http://localhost/aaa?search=
http://www.sitea.com/ => http://localhost/bbb/ (without 'vip:')
http://www.siteb.com/ => http://localhost/ccc/
Я использую strpos
для судьи:
$str='<a href="http://www.sitea.com/vip:vp_14098">link A</a><a href="http://www.sitea.com/contact">link B</a><a href="http://www.siteb.com/player">link C</a>';
if(strpos($str,'www.sitea.com')!== false){
if(strpos($str,'vip:')!== false){
$str = str_replace('http://www.sitea.com/', 'http://localhost/aaa?search=',$str);
}else{
$str = str_replace('http://www.sitea.com/', 'http://localhost/bbb/',$str);
}
}
if(strpos($str,'www.siteb.com')!== false){
$str = str_replace('http://www.siteb.com/', 'http://localhost/ccc/',$str);
}
echo $str;
Но этот выход:
<a href="http://localhost/aaa?search=vip:vp_14098">link A</a>
<a href="http://localhost/aaa?search=contact">link B</a>
<a href="http://localhost/ccc/player">link C</a>
Вторая ссылка не замените, как я желаю.
Если в '$ str' есть больше ссылок, как сделать разницу между' http: //www.sitea.com/vip: 'и' http: // www.sitea.com/', str_replace заменит от вершины до конца. Благодарю. – cj333
Если вы сначала замените 'http: //www.sitea.com/vip:', то они исчезли из строки, не так ли? Поэтому, если вы замените все вхождения 'http: // www.sitea.com /', те, у кого 'vip:' в конце, не будут затронуты, потому что они уже заменены чем-то другим. Я не совсем уверен, отвечает ли это на ваш вопрос, но в противном случае вам нужно будет уточнить, в чем проблема. – Niko
право, глупо меня. – cj333