質問

私が助けられたばかりの質問で行き詰まっています。これは新しい問題ですが、ほんの少しだけです。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top