次の出力を達成するために1行でpreg_replace()する方法?regex php:「取り除く[リンク1]取り除く[リンク2] ...取り除く」問題があるときに「取り除く」NO [リンク]
$string1="get rid1 [link1] get rid2 [link2] ..."; // any number of links
echo "[<a href=link1>link1</a>][<a href=link2>link2</a>]";
$string2="get rid any text any text get rid"; // = no links: is a possibility
echo "";
私は、上記の例の$ string1のためではなく、$ string2のために働く以下、試してみました:私は非キャプチャ(?:...)
が働くかもしれないグループだと思うが、私はそれを把握することはできません
$regex="/".
"[^\[\]]*". // the non-bracketed text before: -> eliminate
"\[(.*?)\]". // the bracketed text: [.]: -> convert into links
"[^\[\]]*"; // get rid of non-bracketed text after: -> eliminate
"/";
echo preg_replace($regex,'<a href=jp.php?jp=\1>[\1]</a>',$string1);
を...
この「get rid」では混乱しています。それはいつも「取り除かれていますか?それとも別のものにすることができますか?それは不明だ。 – BeemerGuy
あなたは "[リンク]"がないときには失敗すると言いますが、それでも出力はありません...失敗は何ですか? – BeemerGuy
'get rid'は、括弧で囲まれていないテキスト、たとえば「blah blah blah text blah text [link1] blah blah [linktextofanysort2] blah text blah」とすることができます。今はっきりしている? - 元の質問を修正しました。上記を参照してください:... – ajo