2

こんにちは、プログラミング初心者です。href=" とその後にテキストを追加する php 正規表現の書き方がわかりません。

<a class="aaa" href="/some/file.html">

のように見えるように

<a class="aaa" href="http://www.example.com/some/file.html">

リンクを「aaa」クラスに一致させる必要があります。

誰でも私を助けることができますか?

4

2 に答える 2

2

正規表現でこれをやろうとさえしないほうがいいです。

このようなタスクには DOM パーサーを使用する必要があります。たとえば、これはあなたの人生を本当に楽にします。

$html = new simple_html_dom();
$html->load($input);

foreach($html->find('a[class=aaa]') as $link)
    $link->href = "http://www.example.com".$link->href;

$result = $html->save();

findDOM をうまくクエリできます。パラメーターはtagtype[attributeName=attributeValue]、角括弧がオプションのフィルターである場所です。次に、この関数が見つけたすべてのリンクを繰り返し処理し、href属性にドメインを追加します。

何らかの理由でサードパーティのライブラリを使用できない場合、PHP には組み込みのDOM モジュールが付属しています。コードはそれほど短くて洗練されたものではありませんが、堅牢な正規表現を作成しようとするよりもはるかに望ましい方法です。

于 2012-12-13T23:00:37.767 に答える
0

あなたはこのようにすることができます:

$string = '<a class="aaa" href="/some/file.html">';
$pattern = '~class="aaa" href="(.*)"~isU'; 
preg_match($pattern, $string, $matches);

$string = str_replace($matches[1],"http://www.example.com".$matches[1],$string);

echo $string;

class="aaa" に一致するように編集されていますが、そのようなことを頻繁に行う場合は m.buettners の方法もお勧めします。

于 2012-12-13T23:03:05.980 に答える