正規表現を実行したいコンテンツは次のとおりです。
[NON-CA]
This is for Non CA
<b> In a New Line </b>
[/NON-CA]
[CA]
This is for CA
[/CA]
カナダの国コードに基づいてコンテンツを削除したいので、ユーザーがカナダの場合はそのCA
部分のみが表示され、他のユーザーはそのNON-CA
部分のみが表示されます。タグ間のコンテンツには、改行、スペース、特殊文字、HTML マークアップ、HTML エンティティなどを使用できます。ここに私が書いたコードがあります:
<?php
$content = "[NON-CA]This is for Non CA<b> In a New Line </b> [/NON-CA] [CA]This is for CA[/CA]";
$CApattern = "~\[CA\](.*?)\[/CA\]~";
$NonCApattern = "~\[NON-CA\](.*?)\[/NON-CA\]~";
$NonCApatternsReplacement = array();
$Replacepatterns = array();
$Replacepatterns[] = "~\[CA\]~";
$Replacepatterns[] = "~\[/CA\]~";
$NonCApatternsReplacement[] = "~\[NON-CA\]~";
$NonCApatternsReplacement[] = "~\[/NON-CA\]~";
if($country_code == "CA"){ //if its the user of country Canada remove the NON-CA Tag
$result_p1 = preg_replace($NonCApattern, "", $content, -1, $count);
$result_p2 = preg_replace($Replacepatterns, "", $result_p1, -1);
}
else{ //if user is not from CANADA remove CA tag and Text
$result_p1 = preg_replace($NonCApatternsReplacement, "", $content, -1);
$result_p2 = preg_replace($CApattern,"", $result_p1, -1, $count);
}
echo $result_p2
?>
したがって、カナダのユーザーが来た場合、コンテンツは次のようになります。
[NON-CA]
This is for Non CA
<b> In a New Line </b>
[/NON-CA]
This is for CA
実際には次のようになります。
This is for CA
カナダ人以外のユーザーが到着すると、結果のテキストは次のようになります。
This is for Non CA
<b> In a New Line </b>
[CA]
This is for CA
[/CA]
実際には次のようになります。
This is for Non CA
<b> In a New Line </b>
条件に従って、それぞれのユーザーに表示されるべきではないコンテンツの一部を置換/削除することではありません。私の正規表現に何か問題がありますか?