Domanda

Ho una lunga stringa che può contenere tutti i valori allo stesso tempo:

hello<!>how are you? <!>I am fine<!> What is up? <!> Nothing!

Ho bisogno di trovare tutti questi posibilities:

' <!> '
' <!>'
'<!> '
'<!>'

e sostituirli con "\ n"

Si può che essere realizzato con str_replace in php?

È stato utile?

Soluzione

Se avete solo quei 4 possibilità, sì, allora si può fare con str_replace.

$str = str_replace( array( ' <!> ', ' <!>', '<!> ', '<!>' ), "\n", $str );
  

Si, ma cosa succede se ci sono due spazi? O una scheda? Si fa ad aggiungere un caso spaziale per ogni?

È possibile aggiungere casi particolari per ciascuno di questi, o di utilizzare le espressioni regolari:

$str = preg_replace( '/\s*<!>\s*/', "\n", $str );

Altri suggerimenti

Naturalmente, è possibile raggiungere questo obiettivo con 4 chiamate al str_replace. Modifica mi sbagliavo. È possibile utilizzare le matrici in str_replace .

$str = str_replace(' <!> ', "\n", $str);
$str = str_replace(' <!>',  "\n", $str);
$str = str_replace('<!> ',  "\n", $str);
$str = str_replace('<!>',   "\n", $str);

Anche considerare l'utilizzo strtr , che permette di farlo in un passo.

$str = strtr($str, array(
    ' <!> ' => "\n",
    ' <!>'  => "\n",
    '<!> '  => "\n",
    '<!>'   => "\n"
));

In alternativa, è possibile utilizzare un espressione regolare

$str = preg_replace('/ ?<!> ?/', "\n", $str);

Si può certamente farlo con str_replace in questo modo:

$needles = array(" <!> ","<!> "," <!>","<!>");
$result = str_replace($needles,"\n",$text);

Non si può fare con un semplice str_replace. O utilizzare una combinazione di explode, strip e implode o preg_replace utente.

Modifica:. preg_replace('/\s*<!>\s*', PHP_EOL, $string); dovrebbe essere meglio

Certo, str_replace('<!>', "\n", $string); se il vostro esempio è completo.

Si potrebbe utilizzare:

//get lines in array
$lines = explode("<!>", $string);
//remove each lines' whitesapce
for(i=0; $i<sizeof($lines); $i++){
    trim($lines[$i]);
}
//put it into one string
$string = implode("\n", $lines)

E 'un po' noioso, ma questo dovrebbe funzionare (rimuove anche due spazi, e le schede). (Non prova il codice, quindi non ci possono essere degli errori)

Questa è sorta di ordinata:

$array = explode('<!>', $inputstring);
foreach($array as &$stringpart) {
  $stringpart = trim($stringpart);
}
$outputstring = implode("\r\n", $array);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top