質問

複数の文字列があり、それぞれにアンカータグとURLが含まれています。

string ex。

here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!

iはアンカータグとその間のすべてを解析したいです。

結果の例

here is a link. enjoy!

href =部分のURLは、常にリンクテキストと一致するとは限りません(URLが短くなる場合があり、説明テキストだけになる場合もあります)。

私は、正規表現またはphp関数を使用してこれを行う方法を考え出すのが非常に困難です。文字列からアンカータグ/リンク全体をどのように解析できますか?

ありがとう!

役に立ちましたか?

解決

regexを使用して、 html を解析し、代わりにhtmlパーサーを使用します。

ただし、正規表現を使用する必要があり、アンカータグの内部コンテンツには</a>のようなhtmlがないことが保証され、各文字列には例のように1つのアンカータグのみが含まれることが保証されている場合、次のようなものを使用できます。

/^(.+)<a.+<\/a>(.+)$/$1$2

に置き換える

他のヒント

結果の例を見ると、タグ/コンテンツを削除しているように見えます-削除したものを残したいですか、それともしませんか?そうでない場合は、 strip_tags() を探している可能性があります。

あなたの問題は非常に具体的であるように思われるので、これでうまくいくと思います:

$str = preg_replace('#\s?<a.*/a>#', '', $str);

通常のPHP文字列関数を使用します。

$str='here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!';
$s = explode("</a>",$str);
foreach($s as $a=>$b){
    if( strpos( $b ,"href")!==FALSE ){
        $m=strpos("$b","<a");
        echo substr($b,0,$m);
    }
}   
print end($s);

出力

$ php test.php
here is a link . enjoy!
$string = 'here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!';
$text = strip_tags($string);
echo $text; //Outputs "here is a link . enjoy!"
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top