質問
複数の文字列があり、それぞれにアンカータグと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!"
所属していません StackOverflow