どうしてもcallbackを使いたくないのでしょうか?
この方が楽だとおもいますけど・・・
PHP
1
2$str=<<<eof
31.test<a href="hoge.htm" id="hoge">hoge1</a>test<br>
42.test<a href="hoge.htm" target="_blank" id="hoge2">hoge2</a>test<br>
53.test<a href="hoge.htm" target='' id="hoge3">hoge3</a>test<br>
64.test<a href="hoge.htm" target = "" id="hoge4">hoge4</a>test<br>
75.test<a href="hoge.htm" target="fuga" id="hoge5">hoge5</a>test<br>
86.test<a href="hoge.htm" target = "fuga" id="hoge6">hoge6</a>test<br>
97.test<a href="hoge.htm" data-target="fuga" id="hoge7">hoge7</a>test<br>
10eof;
11
12$pattern="/(?<=<a\s).*?(?=>)/";
13$replacement=function($x){
14 return
15 preg_replace(
16 ["/(target\s*=\s*)([\"'])\2/","/^(?!.*?\starget[\s=]).*/"],
17 ["target='_blank'","\0 target='_blank'"]
18 ,$x[0]);
19};
20print preg_replace_callback($pattern,$replacement,$str);
21
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/21 11:08
2018/02/21 11:50