Portál AbcLinuxu, 28. října 2025 22:03
Jak v PHPku v eregi_replace, nebo jiné funkci pro regulérní výrazy zadám, že má nahrazovat pouze pokud je sudý počet určitých znaků.
Konkrétně potřebuju pracovat s textem, který je rozdělen do řádků a řádky do elementů pomocí znaku ; Jenomže jak znak konce řádků, tak ; může být součástí textu a to že to tak není se pozná podle toho jestli je před \r\n a ; nula, nebo sudý počet \.
\(..\)* nestačí?
Bez jakých lomítek?
Mám takový textový soubor:
toto ma byt na jedne \ radce a toto taky \\ toto má být na další řádceZkoušel jsem vymyslet něco takového:
<?php
$h=fopen("text.txt","r");
$text=fread($h,filesize("text.txt"));
fclose($h);
$pole=spliti("((\\\\\\\\)*\n)",$text);
array_pop($pole);
print_r($pole);
echo "<hr>";
$pole=preg_split("/(\\\\\\\\)*\n/",$text);
array_pop($pole);
print_r($pole);
?>
Jenomže obojí mi text vypíše jako
Array ( [0] => toto ma byt na jedne \ [1] => radce [2] => a toto taky [3] => toto ma byt na dalsi radce ) Array ( [0] => toto ma byt na jedne \ [1] => radce [2] => a toto taky [3] => toto ma byt na dalsi radce )Místo:
Array ( [0] => toto ma byt na jedne \ radce [1] => a toto taky [2] => toto ma byt na dalsi radce ) Array ( [0] => toto ma byt na jedne \ radce [1] => a toto taky [2] => toto ma byt na dalsi radce )Kde dělám chybu? Proč mi to rozdělí ten text po tom lomítku v [0]? Předem děkuji za vaše odpovědi.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.