少し前にbashで書いたスクリプトをPHPに移植しようとしています。1つの特定の行は、英数字以外のすべての文字をエスケープすることです。
bashでは、次のようにワンライナーとして実行できました。
echo "aaa bbb::" | sed 's/\([^a-zA-Z0-9]\)/\\\1/g'
# => aaa\ bbb\:\:
私がPHPで得た最も近いものはこれでした:
echo preg_replace('/([^a-zA-Z0-9])/','\\\','aaa bbb::');
# => aaa\bbb\\
ただし、内部で正規表現グループを再利用するのに苦労していますpreg_replace
(\1と$1を試しました)。
誰かがこのPHPワンライナーを正しく入手するのを手伝ってもらえますか?