Как справиться с этим HTML-кодом, эхом, с PHP, который как одинарные, так и двойные кавычки?

Я не уверен, что это более чистый способ написать это, но я думаю, что здесь нет проблем:

<?php switch ( $meta_box['type'] ) { case 'textarea': echo '<textarea name="<?php echo $meta_box[ 'name' ]; ?>"> <?php echo htmlspecialchars( $data[ $meta_box[ 'name' ] ] ); ?> </textarea>' break; 

Здесь сложнее, поскольку элементы, которые должны быть эхом, имеют одинарные и двойные кавычки:

по умолчанию:

  echo "<input type="text" name="<?php echo $meta_box[ 'name' ]; ?>" value="<?php echo htmlspecialchars( $data[ $meta_box[ 'name' ] ] ); ?>"" /><?php } 

Любые предложения по переписыванию этого кода?

Это полный оператор switch:

 <?php switch ( $meta_box['type'] ) { case 'textarea': echo '<textarea name="<?php echo $meta_box[ 'name' ]; ?>"> <?php echo htmlspecialchars( $data[ $meta_box[ 'name' ] ] ); ?> </textarea>' break; default: echo "<input type="text" name="<?php echo $meta_box[ 'name' ]; ?>" value="<?php echo htmlspecialchars( $data[ $meta_box[ 'name' ] ] ); ?>"" /><?php } } ?> 

Solutions Collecting From Web of "Как справиться с этим HTML-кодом, эхом, с PHP, который как одинарные, так и двойные кавычки?"

Если вы действительно хотите вывести PHP-код:

 <?php switch ( $meta_box['type'] ) { case 'textarea': echo '<textarea name="<?=$meta_box[\'name\']?'.'>"> <?=htmlspecialchars( $data[ $meta_box[ \'name\' ] ] ) ?'.'> </textarea>'; break; default: echo '<input type="text" name="<?=$meta_box[ \'name\' ] ?'.'>" value="<?=htmlspecialchars( $data[ $meta_box[ \'name\' ] ] ) ?'.'>">'; ?> 

В противном случае это имеет больше смысла для меня:

 <?php switch ( $meta_box['type'] ) { case 'textarea': echo '<textarea name="'.$meta_box['name'].'>">'. htmlspecialchars( $data[ $meta_box['name'] ] ). '</textarea>'; break; default: echo '<input type="text" name="'.$meta_box[ 'name' ].'" '. 'value="'.htmlspecialchars( $data[ $meta_box[ 'name' ] ] ).'">'; } ?> 

Но я думаю, что индекс массива $data[$meta_box['name']] .

 echo 'String with "double quotes" inside'; echo "String with \"double quotes\" inside"; echo 'String with \'single quotes\' inside'; echo "String with 'single quotes' inside"; echo 'String with \'single quotes\' and "double quotes" inside'; echo "String with 'single quotes' and \"double quotes\" inside"; 

Почему вы не следуете правилу KISS , попробуйте ниже, если у вас больше нет условий

 <?php if( $meta_box['type'] === 'textarea' ) { ?> <textarea name="<?php echo $meta_box[ 'name' ];?>"><?php echo htmlspecialchars($data[$meta_box['name']]); ?></textarea> <?php } else { ?> <input type="text" name="<?php echo $meta_box['name']; ?>" value="<?php echo htmlspecialchars( $data[$meta_box['name']]); ?>" /> <?php }?> 

Рад был помочь 🙂

Я склонен использовать двойные кавычки для эха и одинарных кавычек в пределах этого

 echo "Hello string test ' "; 

или вы можете использовать escape \

 echo "hello string test \" "; 

Кроме того, в вашем коде вы эхо эхо.

Вы можете избежать цитирования makrs следующим образом:

 echo "<input type=\"text\" name=\"test\" />; 

Но почему бы вам не сделать так:

 echo '<textarea name="' . $meta_box[ 'name' ] . '"> 

Есть много способов избежать контента:

 $a = 5; $b = array(3); // Single quotes treats the insides as you type it, except for a few like // double-backslash (which makes a backslash) or backslash apostrophe, which // allows a single apostrophe, so including a dollar sign inside will actually // print it out to screen $content = 'This will print a literal dollar sign followed by an "a": $a'; // $a $content = 'This will print a backslash and a literal dollar sign followed by an "a": \$a'; // \$a // However, variables inside double quotes get resolved with their variable values, // unless you have preceded the dollar sign with a backslash to let it be treated // as a literal dollar $content = "This will include the value of variable \$a, as it is looking for a variable: $a"; // 5 $content = "This will print a literal dollar sign followed by an \"a\" because we have backslash-escaped it: \$a"; // $a // For cases where you need to use brackets with your variable and you wish to transclude // the content, you need to enclose the variable inside curly braces. This helps PHP know // that the variable has actually ended, and that you didn't want to actually print the // bracket afterward $content = 'This will print a literal dollar sign followed by an "a" and enclosed in braces: {$a}'; // {$a} $content = "This will include the value of variable \$a, as it is looking for a variable: {$a}"; // 5 $content = 'This will print a literal dollar sign followed by an "a" and brackets and enclosed in braces: {$b[0]}'; // {$b[0]} $content = "This will include the value of variable \$a, as it is looking for a variable: {$b[0]}"; // 3 

… и в HTML (или XML, включая истинный XHTML), вы также можете выполнять экранирование; вы можете использовать escapes независимо от того, есть ли в HTML одиночные или двойные кавычки:

Полезно для кавычек, используемых внутри кавычек:

 <!-- Hexadecimal escape --> <input type="text" value="I want a quote here: &#x22; " /> <!-- " --> <!-- Decimal escape --> <input type="text" value="I want a quote here: &#34; " /> <!-- " --> <!-- Predefined entity escape --> <input type="text" value="I want a quote here: &quot; " /> <!-- " --> 

Полезно для апострофов внутри апострофов:

 <!-- Hexadecimal escape --> <input type="text" value='I want an apostrophe here: &#x27; ' /> <!-- ' --> <!-- Decimal escape --> <input type="text" value='I want an apostrophe here: &#39; ' /> <!-- '--> <!-- The following sadly only works in XML, but not HTML; on the other hand, XML doesn't haven't a lot of the convenient entities like `&nbsp;` predefined though, but you can always use hex or dec safely. --> <input type="text" value="I want an apostrophe here: &apos; " /> <!-- ' --> 

Обратите внимание на то, что шестнадцатеричное правило имеет большую ценность, поскольку оно также используется в JavaScript:

 var content = '\u0027'; // ' 

и CSS

 p:before {content: '\27'} /* ' */ 

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

В CSS это одно и то же, но обратная косая черта отличается тем, что за ними обычно следует шестнадцатеричная последовательность Unicode (или другая обратная косая черта) и в противном случае игнорируются.

В JavaScript (как и в случае двойных кавычек в PHP) обратная косая черта может иметь особое значение для экранирования других последовательностей, таких как «\ n» или другая обратная косая черта, но в противном случае игнорируется.

Вы можете найти их для поиска «Unicode codepoint» для любого символа, а не только для пунктуации, но также для любого символа в любом скрипте. Они обычно выражаются как U + 00A0 или U + 0027 (обратите внимание, что он может также содержать буквы AF). Редко они могут требовать 6 цифр (или комбинацию из двух четырехзначных), но обычно 4 достаточно.