これが機能しない理由を解読するのを手伝ってくれる人はいますか?
$cssid = preg_replace("/'/", "", $cssid);
一部の HTML から一重引用符を削除しようとしています...
ありがとう!H
編集 これは完全な機能です。画像を使用して Drupal メニューを再構築するように設計されており、各項目に CSS クラスを適用して、必要な画像を選択できるようにします。スペースとアポストロフィを取り除く必要があります。そうしないと、CSS セレクターが失敗します。
このすべての問題を引き起こしているメニュー項目のタイトルは次のとおりです。
What's new
かなり無害だと思います。(そのシングルを除いて ')
function primary_links_add_icons() {
$links = menu_primary_links();
$level_tmp = explode('-', key($links));
$level = $level_tmp[0];
$output = "<ul class=\"links-$level\">\n";
if ($links) {
foreach ($links as $link) {
$link = l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']);
$cssid = str_replace(' ', '_', strip_tags($link));
$cssid = str_replace('\'', '', $cssid);
/*$link = preg_replace('#(<a.*?>).*?(</a>)#', '$1$2', $link);*/
$output .= '<li id="'.$cssid.'">' . $link .'</li>';
};
$output .= '</ul>';
}
return $output;
}
編集 サガは続きます...
PHPMYADMIN で次のエラーが表示されることに気付きました。
mbstring PHP 拡張機能が見つかりませんでした。マルチバイト文字セットを使用しているようです。mbstring 拡張機能がないと、phpMyAdmin は文字列を正しく分割できず、予期しない結果になる可能性があります。
これが何か関係あるのかな?
いずれにしても、SQL コードは次のとおりです。
('primary-links', 951, 0, 'http://www.google.com', '', 'What''s New',
そして、これは次のようにレンダリングされると、FireBug に表示されます。
<li id="What's_New">
"What@s New" というメニュー項目を作成しましたが、str_replace() はそれで問題なく動作するので、このアポストロフィがすべてです。私は同意すると思います、表現は機能しますが、それはエンコーディングの問題でなければなりません。これは実際には適切で一般的なアポストロフィであり、亜種の 1 つではありませんが、何らかの理由で PHP はそれをまったく認識できません。
編集 なんてこった - それはまた Drupal だ...すべてのリンクをフォーマットする関数 l() は、出力が書き直されても完全に影響を受けないように見えますか?! いずれにせよ、このコードは機能します...
function primary_links_add_icons() {
$links = menu_primary_links();
$level_tmp = explode('-', key($links));
$level = $level_tmp[0];
$output = "<ul class=\"links-$level\">\n";
if ($links) {
foreach ($links as $link) {
$link['title'] = str_replace('\'', '', $link['title']);
$link = l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']);
$cssid = str_replace(' ', '_', strip_tags($link));
/*$link = preg_replace('#(<a.*?>).*?(</a>)#', '$1$2', $link);*/
$output .= '<li id="'.$cssid.'">' . $link .'</li>';
};
$output .= '</ul>';
}
return $output;
}
2時間後、このサイトのテーマ設定を続けることができます...
すべての提案に感謝します。この投稿で drupal スニペットの作成者を紹介します。他の人も恩恵を受けることを願っています。