質問
私が助けられたばかりの質問で行き詰まっています。これは新しい問題ですが、ほんの少しだけです。
href の内容を取得するためにこの preg_match があります。正規表現を使用しないようにとは言わないでください。他のパーサー/クラスなどを使用していることは知っていますが、これは古いスクリプトなので、今のところ修正する必要があります。:) 書き直す時間はありません!
preg_match("~<a target=\'_blank\' rel=\'nofollow\' href=\"(.*?)\">~i", $epilink, $epiurl);
返される内容は次のとおりです。
http://www.example.com/frame2.php?view=&epi=54673-r
ただし、次のように返されるはずです。
http://www.example.com/frame2.php?view=168204&epi=54673
これは、動作する HTML の例です。
<a target='_blank' rel='nofollow' href="http://www.example.com/frame2.php?view=545903&epi=54683">
返された URL の形式が間違っているのはなぜですか?
助けてくれてありがとう。
解決
$string="<a target='_blank' rel='nofollow' href=\"http://www.example.com/frame2.php?view=545903&epi=54683\">";
$s = explode('">',$string);
foreach($s as $k){
if (strpos($k,"href")!==FALSE){
echo preg_replace('/.*href="|/ms',"",$k);
break;
}
}
出力
$ php test.php
http://www.example.com/frame2.php?view=545903&epi=54683
他のヒント
これは機能するはずです:
$epilink = "<a target='_blank' rel='nofollow' href=\"http://www.example.com/frame2.php?view=545903&epi=54683\">";
preg_match("/<a target='_blank' rel='nofollow' href=\"(.*?)\">/i", $epilink, $epiurl);
print_r($epiurl);
あなたも使うことができます preg_match_all
所属していません StackOverflow