如何在php中的字符串中包含两种类型的引号?

时间:2018-01-14 18:31:31

标签: php

我需要构建以下字符串:

#<tr class="[^"]*">
<td><div class="grid_content sno"><span>[^"]*</span></div></td>
<td>
<center>
<div class="grid_content2 sno">
<span>
<img src="https://seriesblanco.com/banderas/es.png">
</span>
</div>
<center>
</td>
<td>
<div class="grid_content sno">
<span>
<a href="(.*?)" target="_blank">
<img src='/servidores/powvideo.jpg' width='[^"]*' height='[^"]*' /></a>
</span>
</div>
</td>
<td>
<div class="grid_content sno"><span>[^"]*</span>
</td>
<td>
<div class="grid_content sno"><span>[^"]*</span></td>
<td></td>
</tr>#

正如您所看到它有""''引号,我发现无法构建像$string = *codeabove*这样的字符串,因为如果我使用某种引用或另一种引用它会自行关闭,还有另一个吗?

3 个答案:

答案 0 :(得分:2)

你可以用'\'来逃避一个角色 所以例如

$string = 'theString\''

答案 1 :(得分:0)

没有逃避和更优雅:

<?php

$str = <<<EOD
Example of string 
using 'both' types 
of "quotes" with 
heredoc sintax.
EOD;

echo $str;

将打印:

Example of string 
using 'both' types 
of "quotes" with 
heredoc sintax.

答案 2 :(得分:0)

转义引号字符是一种解决方案。在简单的情况下,这是最简单的事情。

但有时简单地slip out of HTML and use the PHP interpreter更容易。这样做没有性能影响。根据具体情况,它会导致代码更易于读写。例如......

<?php
$str = '[^"]*';
?>
<div class="grid_content sno"><span><?= $str; ?></span></div>

无可否认,简单的情况是简单地转义一个引号字符很容易。但请考虑一个更复杂的例子。

<?php
$selected = $some_value;
if($expression == true): ?>
    <div class="somecss">
        <select>
            <?php foreach($options as $key => $value): ?>
                <option value='<?= $key; ?>'
                        <?php if($key === $selected) : ?> selected = "selected"<?php endif; ?>
                        ><?= $value; ?></option>
                    <?php endforeach; ?>
        </select>
    </div>
<?php else: //$expression is false ?>
    <div class="error">No options available</div>
<?php endif; ?>
More HTML here