次の文字列の「%」マークの内側に一致する正規表現が必要です。
1) Bla bla bla %yada yada yada% bla bla.
フォームが次のような場合でも:
2) ブラ ブラ ブラ %yada yada yada% bla bla %yada #1 yada%
私はそれでいいと思った/%([^%]*)%/
のですが、2 番目のケースでは 2 番目の部分 (%yada #1 yada%) とは一致せず、最初の部分だけに一致します。
「%」マークの間の部分文字列に「#1」のようなものが含まれていても、式は一致する必要があります。前もって感謝します
よろしく
function replace($search, $replace, $subject, $link)
{
if (preg_match('/#[1-9]/', $search) == 1 && $link == null)
{
echo preg_replace($search, $replace, $subject);
}
if (preg_match('/%[a-zA-Z0-9# ]+%/', $search) == 1 && $link != null && $replace == null)
{
echo preg_replace('/%[a-zA-Z0-9# ]+%/', '<a href=$link>$1</a>', $subject, 1) . '<br>';
}
}
$string = 'bla bla #1 bla bla %bla bla% bla #2 %bla bla #3 bla%';
$newString = replace('/%[a-zA-Z0-9# ]+%/', null, $string, 'www.google.com');
echo $newString;
preg_match('/%[a-zA-Z0-9# ]+%/', $newString)); // 0 = no match
したがって、この 2 回目の呼び出しでは一致しません。お役に立てれば。