Специальные символы в FPDF с PHP

У меня есть веб-форма, которую пользователи могут заполнить, и этот контент заполняет PDF с FPDF и PHP. Когда пользователь вводит слово с апострофом, перед ним в PDF появляется косая черта.

Точно так же специальные символы, такие как символы товарных знаков, кодируются неправильно.

Часто задаваемые вопросы FPDF говорят, что использовать:

$str = utf8_decode($str);

Но я просто не знаю, как применить это ко всему PDF. Я пытаюсь думать об этом, как будто это HTML-страница, но это не помогает. if ($ var == TRUE) {$ foo = "bar"; } или if ($ var == TRUE) {$ foo = "bar"; } else {$ foo = ""; } or $foo = ($var==TRUE) ? ...

How should the following boolean expression be written in PHP:

$foo = "";
if($var==TRUE){
    $foo = "bar";
}

or

if($var==TRUE){
    $foo = "bar";
}else{
    $foo = "";
}

or

$foo = ($var==TRUE) ? "bar": "";
7
задан George Stocker 18 August 2010 в 16:19
поделиться

6 ответов

Во-первых, true не является константой, это токен, поэтому, пожалуйста, не прописывайте его (я знаю, что некоторые стандарты это делают, но я думаю, что это сбивает с толку смысл) ...

Во-вторых, вам не нужно избыточное сравнение $ var == true внутри if .Это точно так же, как if ($ var) { (Для двойного сравнения == . Идентичное сравнение === должно быть явным).

В-третьих, я предпочитаю предварительную инициализацию. Итак:

$foo = '';
if ($var) {
    $foo = 'one status';
} else {
    $foo = 'another status';
}

Если вам не нужна ветка else, просто удалите ее. Я предпочитаю предварительную инициализацию, поскольку она заставляет вас инициализировать переменную и предотвращает случаи, когда вы забываете инициализировать ее в одной из ветвей. Кроме того, он дает вам подсказку типа, когда вы вернетесь, чтобы прочитать функцию позже ...

И для такой простой ветки, как эта, можно использовать тернарный синтаксис. Если есть более сложная логика, я бы держался подальше:

$foo = $var ? 'bar' : '';
8
ответ дан 6 December 2019 в 14:00
поделиться

Мне нравится первое:

$foo = "";
if($var==TRUE){
    $foo = "bar";
}

Поскольку оно ясно , кратко и легко читается.

1
ответ дан 6 December 2019 в 14:00
поделиться

Все это работает. Это предпочтение. Я бы сначала подумал об инициализации переменной, как в первом примере. Но для чего-то такого простого в моей книге подойдет третий вариант.

Кроме того, третий вариант не должен быть таким многословным, если $ var - это просто логическое значение:

$foo = $var ? "bar" : "";
5
ответ дан 6 December 2019 в 14:00
поделиться

Не имеет большого значения. Мне нравится первый, когда есть много elseif, чтобы вы знали, что переменная всегда инициализируется. Но на самом деле это вопрос предпочтений.

Как и кавычки, мне нравится использовать одиночные кавычки в php. Без уважительной причины :)

0
ответ дан 6 December 2019 в 14:00
поделиться

Я предпочитаю первый (за исключением избыточного теста для логического), потому что он работает согласованно для разных языков, особенно тех, которые требуют объявления переменной (и, возможно, ее типизации) перед ее установкой.
Java:

String foo = "";
if (var) {
  foo = "Something";
}

JavaScript или JavaFX:

var foo = "";
if (var) {
  foo = "Something";
}

и т. Д.
Можно использовать и третью форму, но если условие (или присваивание) сложное, оно будет немного менее читаемым.

1
ответ дан 6 December 2019 в 14:00
поделиться

Правильный ответ, как это часто бывает, «это зависит от обстоятельств». В этом случае

if ($var==TRUE) $foo = "bar";
else $foo = "";

очень ясно. Но каков ваш контекст?

В общем, третичный оператор, ваш третий вариант, следует использовать с особой осторожностью, так как его очень легко читать.

Но подумайте о том, что вы хотите, чтобы ваш код ЗНАЧИЛ, а не о том, что он ДЕЛАЕТ. Вы хотите установить для $ foo "нормальное" значение, а затем переопределить его? Или вы хотите установить что-то, что зависит от того, что такое $ var?

Что-то, что я считаю полезным изменить, это не совсем то, о чем вы спрашиваете, но это похоже, это из

function func() {
    ...
    if ($condition) {
        do plenty
        of things
    }
    else {
        do plenty
        of things
    }
}

Это, я обычно хотелось бы изменить на:

function func() {
    ...
    if ($condition) {
        do plenty
        of things
        return;
    }
    do plenty
    of things
}

Обычно имеет смысл .

Просто спросите себя: «Если бы тот, кто ничего не знал о моем коде, прочитал его, имел бы смысл для него? Или для нее?»

0
ответ дан 6 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: