问题
I have an xml file for which I try do display some informations into a php form.
So i've been trying to do something like that:
<?php
$url="tmp/".$_GET['n_doss']."-".date('d-m-Y')."-legale.xml";
if(file_exists($url))
{
$chaineXML= $url;
$dom = new DomDocument();
$dom->load($chaineXML);
$date = $dom->getElementsByTagName('time');
$time = DateTime::createFromFormat("d/m/Y H:i:s", $date->item(0)->nodeValue);
$datecreditsafe=date_format($time, 'd-m-Y');
if($dom->getElementsByTagName('errors')->length != 0)
{
header('Location: index.php?p=add_debiteur&n_doss='.$_GET['n_doss'].'&type='.$_GET['type'].'&mode='.$_GET['mode'].'&step=4&creditsafe=false&siret='.$_GET['siret'] );
}
else
{
if(!empty($data['forme_juridique']))
{
echo "<label>Forme juridique:</label><input type='text' name='forme_juridique'><br>";
}
else
{
if($dom->getElementsByTagName('legalform')->length != 0)
{
$etat = $dom->getElementsByTagName('legalform');
$forme_juridique=$etat->item(0)->nodeValue;
echo "<label>Forme juridique:</label><input type='text' name='forme_juridique' value='".utf8_decode(stripslashes($forme_juridique))."'><br>";
}
else
{
echo'<label for="forme_juridique">Forme Juridique:</label><table width="45%" border="0">
<tr>
<td width="50%"><input type="checkbox" name="forme_juridique" value="SAS" onclick="limite_check(this.name, 1)" />
SAS</td>
<td width="50%"><input type="checkbox" name="forme_juridique" value="SA" onclick="limite_check(this.name, 1)" />
SA</td>
</tr>
<tr>
<td><input type="checkbox" name="forme_juridique" value="SARL" onclick="limite_check(this.name, 1)" />
SARL</td>
<td><input type="checkbox" name="forme_juridique" value="EURL" onclick="limite_check(this.name, 1)" />
EURL</td>
</tr>
<tr>
<td><input type="checkbox" name="forme_juridique" value="SNC" onclick="limite_check(this.name, 1)" />
SNC</td>
<td><input type="checkbox" name="forme_juridique" value="SDF" onclick="limite_check(this.name, 1)" />
SDF</td>
</tr>
<tr>
<td><input type="checkbox" name="forme_juridique" value="Société Particulière" onclick="limite_check(this.name, 1)" />
Société Particulière </td>
<td><input type="checkbox" name="forme_juridique" value="Entreprise Individuelle" onclick="limite_check(this.name, 1)" />
Entreprise Individuelle</td>
</tr>
<tr>
<td><input type="checkbox" name="forme_juridique" value="Artisan" onclick="limite_check(this.name, 1)" />
Artisan</td>
<td><input type="checkbox" name="forme_juridique" value="Commerçant" onclick="limite_check(this.name, 1)" />
Commeçant</td>
</tr>
<tr>
<td><input type="checkbox" id="box" name="forme_juridique" value="Autre" onclick="GereControle(\'box\', \'forme_juridique2\', \'1\');limite_check(this.name, 1)"/>
Autre</td>
<td><input type="text" name="forme_juridique2" id="forme_juridique2" style="visibility:hidden" /></td>
</tr>
</table>';
}
}
}
But the real trouble is that it display to me only a part of this var: actually the real part to be display is: SA à conseil d'administration
and it display to me only SA à conseil d
I've tried several things like:
str_replace("'","'",$str)
or
htmlentities($str, ENT_QUOTES, "UTF-8")
or again mysql_real_escape_string
or addslashes
and stripslashes
but I did not find the way to make it work.
Thank you in advance for the help
回答1:
Try replacing the echo
line with this one:
echo '<label>Forme juridique:</label><input type="text" name="forme_juridique" value="' . htmlspecialchars($data['forme_juridique']).'"><br>';
回答2:
try:
str_replace('"','\"',$str)
回答3:
Did you check the actual HTML it echoed? Therefore you can know if it was caused by single quote issue or the content was just indeed "SA à conseil d".
Or you can just quote the value with double quote.
回答4:
This code will give a better result:
addslashes($data['forme_juridique'])
来源:https://stackoverflow.com/questions/12704547/display-a-php-variable-that-contain-quotes