私はいくつかのphpファイルの先頭にあるメタデータを呼び出すためにphp echoを使用しています。ここでpreg_matchとの衝突
<?php
include "$_SERVER[DOCUMENT_ROOT]/meta.php";
?>
はユニークなメタファイルがどのように見えるかです:いくつかの未知の理由で
<?php
if (preg_match("@[email protected]", $_SERVER['REQUEST_URI'])) {
$meta=<<<EOF
<title>FR Contact title</title>
<meta name="description" content="FR Contact description">
<link rel="alternate" href="https://site.ch/contact" hreflang="fr-CH" />
<link rel="alternate" href="https://site.ch/de/contact" hreflang="de-CH" />
<link rel="alternate" href="https://site.ch/it/contact" hreflang="it-CH" />
EOF;
}
elseif (preg_match("@de/[email protected]", $_SERVER['REQUEST_URI'])) {
$meta=<<<EOF
<title>DE Contact title</title>
<meta name="description" content="DE Contact description">
<link rel="alternate" href="https://site.ch/de/contact" hreflang="de-CH" />
<link rel="alternate" href="https://site.ch/contact" hreflang="fr-CH" />
<link rel="alternate" href="https://site.ch/it/contact" hreflang="it-CH" />
EOF;
}
//echo ">>>>>" . $_SERVER['REQUEST_URI'] . "<<<<";
?>
類似したURLのとを呼び出すとき、私は競合を持っているすべてのファイルは、このコードを使用して独自のメタファイルをインクルードpreg_match、国に関連する別のフォルダ名:de/contactバグにもかかわらず、フランス語の説明が表示されます。
ただし、フォルダ名を少し編集するとde/kontaktが動作し、ドイツ語の説明が表示されます。
このバグを回避する方法を教えてください。
答えはあなたの質問を解決していますか? – chris85