Szöveget tömbbé, írásjelek kihagyásával, új sorokkal
Üdvözlet mindenkinek!
Egy szövegben - furcsa módon - ugyebár vesszők, pontok, stb... írásjelek vannak.
Minden szót formára kellene alakítanom.
A gond az, explode-t használva, hogy ha a szó mellett van egy írásjel akkor az a span-on belülre kerül.Hogyan, milyen módon lehet megoldani hogy az írásjel a span-on kívülre kerüljön?
Ezen kívül a gondom az új sor, a \n.
Valamiért az entereket nem veszi figyelembe, így van hogy a következőt kapom:A következő kóddal szenvedek.- Tudom nem egy agysebészet', de nem jut eszembe más megoldás...
Előre is köszönöm a segítséget
■ Egy szövegben - furcsa módon - ugyebár vesszők, pontok, stb... írásjelek vannak.
Minden szót
<span class="cmenu">_SZÓ_</span>
A gond az, explode-t használva, hogy ha a szó mellett van egy írásjel akkor az a span-on belülre kerül.
<span class="cmenu">részünk,</span>
Ezen kívül a gondom az új sor, a \n.
Valamiért az entereket nem veszi figyelembe, így van hogy a következőt kapom:
<span class="cmenu">bizonyult.<br>
<br>
Május</span>
$str=str_replace('<br />', '<br>', nl2br($str));
$str=explode(' ', $str);
foreach ($str as $s) {
echo '<span class="cmenu">'.$s.'</span> ';
}
Előre is köszönöm a segítséget
preg_replace
Ezer köszönet
Az u flag nem kellett, mert nem UTF8 szövegen alkalmazom...
De tényleg nagyon köszönöm...
Van egyfajta gond vele...
Tényleg nagyon hálás vagyok... de valamiért nem jó a dolog.
Elsőre mikor a saját gépemen kipróbáltam rendesen működött, ezért is gondoltam hogy jó lett.
Viszont mikor feltettem az éles oldalra, valamiért hülyeségeket csinál.
A lényeg hogy az oldal jQuery-vel ajax lekéréssel átalakítja a szöveget hogy a szavak <span>-ban legyenek.
Mivel így a php "UTF-8"-ban kapja meg a szöveget megbolondul.
"iconv"-al "ISO-8859-2"-t csinálok az "UTF-8"-ből, de ha a szöveget így engedem rá a "preg_replace"-re, akkor nem úgy működik ahogy kellene, mert az ékezetes kimaradnak a span-ból.
Szerinted mit lehet csinálni neki?
Nagyon köszönöm...
Minden utf-8
Aztán vannak más függvények is: Multibyte String Functions.
Ha nem megy a regexp, előbb tanulj bele, vagy oldd meg több replace-el, stb., nem jó, ha úgy használsz fel bármilyen kódot, hogy nem érted mit csinál.
Aztán ne csodálkozz, hogy nem műxik utf-8-al, korábbi tevékenységed:
iso-8859-2
Próba nélkül semmit...
Kipróbáltam az u flag nélkül is, és avval is.
Ha megadtam, üres szöveget kaptam, ha kivettem visszaadta a szöveget, csak hibásan.
A jQuery ajax karakterkódolását pedig ha szeretném sem lehetne az utf8-tól eltántorítani.
(Ha lehetne is megnéztem a html parancsokat...
POST / HTTP/1.1
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
---
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
...UTF8 minden..., ezért sem értem a dolog miért nem működik)
Az egész oldalt átírtam UTF-8-ba.
Minden utf8, nem hagytam ki semmit ez biztos. (kivéve egy tinymce-t kell még valahogy átírnom hogy kezelje ne kérdőjelezze az ékezetes betűt, de annak nincs ide köze)
"complex857":
A kód a következő:
Mint fentebb írtam, minden utf8, az ajax, a fájl, az oldal... minden és mégis.
Köszönet...
phpinfo
További ötletként elsőre beszúrnék egy:
Beérkező adatok ellenőrzésére/átalakítására, megnézném mit mond rá mb_detect_encoding(), esetleg átküldeném mb_convert_encoding() -on.
Biztos utf8
Milyen különbségre lennél kíváncsi a két gép phpinfojában?
A kód:
UTF-8
öüó. őúű, éá
ÖÜÓŐÚŰÉÁíÍ
Ami megviccelhet és phpinfo
Más szerveres perverzió lehet még, hogy a PCRE extensiont utf-8 support nélkül fordították. Ilyenkor warningot kéne dobnia amiben tájékoztat erről, éles szerveren lehet ezek csak logba gyűlnek.
A fenti kódpélda utf-8 fileként az én gépemen (php-5.4.4-4.fc17.i686) úgy müködik ahogy az elvárható tőle, tudom, hogy roppant bután fog hangzani, de ha bongészőben nézed a kimenetet akkor ugye a forrást nézed és nem a sima html kimenetet (kezdek kifogyni az ötletekből :-P)
MbString, pass...
Az mbstring beállításai nálam és a szerveren teljesen egyeznek.
A PCRE a szerveren 7.8-as nálam 7.6-os.
A logban nincs hibaüzenet ami ilyen hibára utalna.
Avval pedig hogy a DOM-ot "módosítgatom" tisztában vagyok ;)
Azt hiszem sikerült...
Egy része tér el a Te kódodtól, de arra épül ;)
Nagyon hálás is vagyok érte, köszönöm hogy rám pazaroltad az időd.
Íme a kód:
Aztán jutott eszembe, ha szavanként nézem át, akkor utána teszek egy szóközt és meg is van oldva a probléma...
Mégegyszer nagyon köszönöm...
Bár már megoldódott,