2

ハイパーリンクを含むテキストがあり、一部のハイパーリンクにスペースが含まれているので、それらを%20に変換したいと思います。

例えば:

ハイパーリンクを作成するには<a href="http://www.link-to-my-page.com/page 1.html">Page 1</a>

rawurlencode関数を使用して上記のテキストを変換すると、次のようになります。

To%20make%20hyperlinks%20%3Ca%20href%3D%22http%3A%2F%2Fwww.link-to-my-page.com%2Fpage%201.html%22%3EPage%201%3C%2Fa%3E

リンクのみでスペースを%20に変換するために、次のREを作成しましたが、preg_replaceを使用してスペース(\ s)*を適用する方法がわかりません。

/(http|https|ftp|ftps)(\:\/\/[a-zA-Z0-9\-\.]+)(\s)*\.[a-zA-Z]{2,4}(\/\S*)?/

どんな助けでも大歓迎です。

ありがとう

4

2 に答える 2

4

最も簡単な方法は、DOMDocumentを使用して、これを修正することです

$html = 'To make hyperlinks <a href="http://www.link-to-my-page.com/page 1.html">Page 1</a>';
$doc = new DOMDocument();
$doc->loadHTML( $html);

// Save the fixed HTML
$innerHTML = '';
foreach( $doc->getElementsByTagName('p')->item(0)->childNodes as $child) {
    $innerHTML .= $doc->saveHTML($child);
}

echo $innerHTML;

このSOの質問のおかげで出力:

To make hyperlinks <a href="http://www.link-to-my-page.com/page%201.html">Page 1</a>
于 2012-06-21T17:55:39.787 に答える
3

ここでの正しい答えは正規表現ではありません。urlencode()http://php.net/manual/en/function.urlencode.php

于 2012-06-21T17:48:56.287 に答える