元の正規表現が機能するようになりましたが、非常に似ているため、これを機能させることができると考えました。しかし、私はできません。
このコードは、ユーザーのブラウザで JS が有効になっているかどうかに応じて、リンクが JavaScript または HTML に置き換えられるテンプレート システムに使用されています。
文字列の例は次のようになります。
help{:footerlink}{::helpFooter}
「ヘルプ」は、リンク自体に表示されるテキストです。「footerLink」は、リンクに適用する必要がある CSS クラスです 「helpFooter」は、リンクに適用する必要がある CSS ID です
これが私が使用しようとしているコードです:
$string = 'help{:footerlink}{::helpFooter}';
$classIDExp = '/([a-z0-9]+)\{:([a-z0-9]+)\}\{::([a-z0-9]+)\}/i';
$display = preg_replace($idexp, "$1", $string);
$class = preg_replace($idexp, "$2", $string);
$cssID = preg_replace($idexp, "$3", $string);
$curLink = 'Display Text: ' . $display . '<br />' .
'Class: ' . $class . '<br />CSS ID: ' . $cssID;
echo $curLink;
このコードは次を出力します。
Display Text: help{:footerlink}{::helpFooter}
Class: help{:footerlink}{::helpFooter}
CSS ID: help{:footerlink}{::helpFooter}
適切な出力は次のようになります。
Display Text: help
Class: footerlink
CSS ID: helpFooter
リンク ID は正常に取得されますが、表示テキスト、css クラス、および css ID が見つかりません。コロン (:) もエスケープしようとしましたが、それでも同じ出力が表示されます。
前にも言ったように、私は正規表現の専門家とはほど遠いので、どんな助けも大歓迎です。:(