0

リンクシステムの正規表現を実行していますが、構文は次のようになります。

<a href=":login">Login</a>

これは、ユーザーのブラウザー機能に応じて、このリンクを JS または HTML の宛先に変換する必要があることをシステムに伝えます。

バックエンドの機能はすべて正常に動作していますが、これらの種類のリンクを取得するために使用している正規表現に奇妙な問題があることに気付きました。動的リンク (href=":) が単独で立っている (つまり、別のオブジェクトの隣にない) 場合、問題なく動作します; ただし、次のような動的リンクの場合

<a href=":myLink">

のような標準リンクの後に来る

<a href="myLink">

その後、動的リンクは変更されません。

これは、バグを示すサンプル コードへのコードパッド リンクです。 http://codepad.org/ZKdm2NkS

<a href=":first">リンクは変更されませんが、リンクは変更されることに注意してください<a href=":second">

私は正規表現があまり得意ではないので、(.*)あらゆる場所で a を使用するよりも、物事を処理するためのより良い方法があると確信していますが、前述のように、より良いアイデアや意見を受け入れます。

4

1 に答える 1

1

置き換えているのは「:myLink」部分だけなので、残りの部分と一致させる必要はありません...これを試してください:

$html = preg_replace('/href=":([\w]+)"/', 'href="processedLink-$1"', $html);

これは、単語 (\w) 文字 (文字、数字、アンダースコア) のみに一致します

于 2013-05-24T18:49:15.997 に答える