2017-06-21 15 views
0

PHPの正規表現操作に関するヘルプが必要です。hrefとアンカーテキストを取得して連結するPHP preg_replaceリンク

文字列があります。

$string = 'This article is about something. If You want more 
<a href='http://www.google.com'>click here</a>. If not just close 

私はこのような結果を取得したい:

$string = 'This article is about something. If You want more click here - 
http://google.com. If not just close 

私はPHPでそれをどのように行うことができますか?私は、単純なHTMLパーサや他のライブラリを使用することはできません

ヘルプ、私はどのようにこの

+1

[RegExはXHTML自己完結型タグを除いてオープンタグと一致]の複製が可能です(https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) –

+0

* "単純なhtmlパーサーや他のライブラリを使うことはできません" * ...組み込みのDOMDocumentでさえないのですか?あなたはRegExpとHTMLで悪い時を過ごす可能性が高いです... – CD001

+0

'私は単純なhtmlパーサと他のライブラリ'を使うことはできません、どうしてですか?あなたは 'preg_replace'を使うことができますか?あなたはそれを使って何か試しましたか? – chris85

答えて

0

本当にすべてワンステップでこれを行うための方法を見つけることができませんでしたが、これは動作するはず達成するために見当がつかないください

<?php 
$link = "This article is about something. If You want more <a href='http://www.google.com'>click here</a>. If not just close"; 
preg_match_all('/<a[^>]+href=([\'"])(.+?)\1[^>]*>/i', $link, $result); // Grab the href 
$link = preg_replace("/<a href=.*?>(.*?)<\/a>/",$result[2][0],$link); // remove a tag and replace with href value 
echo $link; 
// output: This article is about something. If You want more http://www.google.com. If not just close 
    ?> 
+0

ありがとうございました。問題は、本当にアンカーテキスト(ここをクリック)が必要であり、2番目の問題は文字列に複数のリンクが含まれることです。あなたのコードは最初に出現したhrefへのすべてのリンクを置き換えます。 –

関連する問題