Fondamentalmente ho un block di html che voglio echo alla pagina e l'html ha il segno $ in esso e il php pensa che sia una variabile quindi $ 1 viene trattato come variabile e non come valore.
Qui ci sono le risposte standard ma nessuna funziona: PHP: come get $ per printingre usando echo
La mia prossima idea è quella di dividere la string in $ ed echeggiare each parte.
Ecco il codice che ho provato echo e print.
foreach ($rows as $rowmk) { $s = $rowmk->longdescription; //$s = str_replace('$', '@', $s); $s = str_replace('$', '\$', $s); //echo "$s" . "<br>"; print $s; }
Tutto l'aiuto è apprezzato.
OK ho risolto utilizzando il valore del codice del carattere per $
foreach ($rows as $rowmk) { $s = $rowmk->longdescription; $s = str_replace('$', '$', $s); echo $s . "<br>"; }
Ho pensato che avrei dovuto postarlo comunque.
Grazie,
Stuoia
Lo stai facendo nel posto sbagliato. L'interpolazione variabile viene eseguita quando la string letterale a virgolette doppie (che nel tuo caso è memorizzata in $rowmk->longdescription
lunga è daclarata.) Una volta terminato, non puoi fare nulla per riavere i $
s.
Soluzione, fai la corretta escaping, quando dichiari la string.
Oppure puoi echo string letterale usando le virgolette singole …
<?php echo 'Give me $1'; ?>
stamperà:
Dammi $ 1
Documenti string PHP:
http://php.net/manual/en/language.types.string.php
Nota a margine: il link che hai fornito ha molte risposte che functionrebbero perfettamente. Come li stai applicando in un modo che non funziona?
Basta usare una singola string quotata.
$foo = 'Hello'; echo '$foo'; // $foo echo "$foo"; // Hello
Presumo che tu legga le tue righe da un database. I segni del dollaro all'interno di queste stringhe non saranno interpolati da php. Ecco un piccolo script di prova per provarlo:
// you'd first have to set the three variables according to your database $dbh = new PDO($DSN, $DB_USER, $DB_PASS); // create a table and insert a string containing a dollar sign $dbh->exec('CREATE TABLE IF NOT EXISTS some_text ( longdescription VARCHAR( 255 ))'); $dbh->exec('INSERT INTO some_text ( longdescription ) VALUES ( "10 $" )'); // query all the data from the table $query =$dbh->query("SELECT * FROM some_text"); $rows = $query->fetchAll(PDO::FETCH_CLASS); // loop over all the rows (as in your example) and output the rows // no problem at all foreach ($rows as $rowmk) { $s = $rowmk->longdescription; echo $s . "<br>"; }
L'ho fatto usando questo
echo "$" . "VariableName";