2011-02-02 2 views
1

Я пытаюсь сделать динамический CSS с помощью PHP.Как добавить одинарную цитату или двойную цитату, если контент имеет пробел

Пример на font-family

$one = 'Times New Roman, Times, serif'; 
$two = 'Lucida Sans Unicode, Lucida Grande, sans-serif'; 

На style.php

body { font-family:<?php echo $two; ?>; } 

Здесь я хочу добавить апостроф или двойные кавычки в Lucida Sans Unicode, Lucida Grande

Так Ouput должно быть

body { font-family:"Lucida Sans Unicode", "Lucida Grande", sans-serif; } 

Позвольте мне знать, как заменить шрифт с цитатой

+0

Вы могли бы просто процитировать каждый элемент строки, вы это знаете? – SilentGhost

ответ

2

Немного более функциональным :-)

function put_quotes ($name) { 
    $name = trim($name); 
    return strpos($name, ' ') ? '"' . $name . '"' : $name; 
} 

$css = implode(', ', array_map('put_quotes', explode(',', $one))); 
0

Не могли бы вы не просто сделать:

body { font-family:"<?php echo strpos(' ', $two) !== false ? '"'.$two.'"' : $two; ?>"; } 
1
$two = '"Lucida Sans Unicode", "Lucida Grande", sans-serif'; 

затем

body { font-family:<?php echo $two; ?>; } 
+0

На db Я храню список шрифтов без цитаты – wow

+1

Они меняются? Похоже на ненужную обработку. Храните их в кавычках ... – labue

1
$two = 'Lucida Sans Unicode, Lucida Grande, sans-serif'; 
$aux = explode(',',$two); 
foreach($aux as &$f){ 
    $f = trim($f); 
    if(strpos($f,' ') !== FALSE) 
     $f = '"' . $f . '"'; 
} 

echo implode(', ',$aux); // "Lucida Sans Unicode", "Lucida Grande", sans-serif 

Edit:
я не думаю об этом, но на самом деле, добавив кавычки переменной $two (в случае необходимости) может сделать трюк ... Что случилось с моим KISS? ...

+0

Вы можете сократить это с помощью '. '' .implode ('", "', explode (',', $ two)). '"'. Gumbo

+0

@Gumbo, попробовали ли вы ваше решение? Это результат: «Lucida Sans Unicode», «Lucida Grande», «sans-serif». Я не уверен, нормально ли процитировать пробелы перед именами ... Это работает? – acm

+0

Нет, вы правы, это не разрешено: «Родовые фамилии шрифтов - это ключевые слова и НЕ должны быть указаны». – Gumbo

0
$two_a = explode(",", $two); 
foreach($two_a as $str) { 
    $str = "'".$str."'"; 
} 
$two = implode(",", $two_a); 
Смежные вопросы