[PHP] Zamiana \r\n na spację


(look997) #1

Jak zamienić \r\n na spację?


([alex]) #2

http://pl.php.net/manual/en/function.str-replace.php


(look997) #3

<?

$bee = "\r\n";

$bee = str_replace('\r\n', ' ', $bee);

echo $bee;

?>

To nie działa.


([alex]) #4

Ponieważ '\r\n' to nie to samo co "\r\n".

'\r\n' - to napis składający się z 4-ch znaków.

"\r\n" - to napis składający się z 2-ch znaków.


(Grzelix) #5

nie testowałem ale powinno zadziałać

$newstring = preg_replace("/[\n\r]/","",$oldstring);


(M@ster) #6

Ludzie, preg_replace do prostej podmiany tekstu (na dodatek przykład z błędem)? Litości...

<?

  $bee = "Tekst \r\n abc";

  echo str_replace("\r\n", ' ', $bee);

?>

(look997) #7

A dlaczego tutaj mi to nie działa?

<?php

$text = "April fools [lista] fff \r\n fff [/lista] 04/01/2002\n";


function next_year($matches)

{

$matches[2] = str_replace("\r\n", " h", $matches[2]);



  return $matches[1].$matches[2]."chu".$matches[3];

}

 $poka = preg_replace_callback(

            "|(\[lista\])(.*)(\[/lista\])|",

            "next_year",

            $text);


$poka = nl2br($poka);

echo $poka;

?>

Przy okazji, może ktoś poda wyrażenie regularne zamiast:

"|(\[lista\])(.*)(\[/lista\])|"

Coś co zastąpi:

$matches[2] = str_replace("\r\n", " h", $matches[2]);

Edytuj: Wychodzi na to, że tylko \n nie da się zmienić tym sposobem, samo\r się zmienia, ale np. takie coś:

<?

$bee = "gg \r\n gg";

$bee = str_replace("\r\n", "hu", $bee);

echo $bee;

?>

Działa w całości poprawnie. Co zrobić, żeby działało też tam?

-- Dodane 01.02.2010 (Pn) 22:50 --

Nikt nie potrafi mi odpowiedzieć dlaczego \n nie zmienia się w tym miejscu?

-- Dodane 07.02.2010 (N) 22:50 --

Chcę aby tutaj(w pogrubionym):

"|(\[lista\])[b](.*)[/b](\[/lista\])|",

był dowolny znak, łącznie z \n. Proszę o pomoc.