ugrás a tartalomhoz

css fájlból ID kinyerése

cszlak · 2013. Május. 12. (V), 16.47
Olyan kérdésem lenne , hogy

van egy css fájl PL: css/index_style.css
(Az elérési útvonalát ismerem.)

Valahogy meg lehet tudni, hogy milyen ID-ket tartalmaz?
(php, js,jquery megoldás is érdekel.)

Pontosan a benne lévő Pl: #center_left{} -ből a "center_left" kellene.
 
1

preg_match_all

szabo.b.gabor · 2013. Május. 12. (V), 17.20
  1. $cssContent=file_get_contents('path_to_css');  
  2.   
  3. $matches=array();  
  4. $pattern='/(#[a-zA-Z0-9-]+)/';  
  5.   
  6. preg_match_all($pattern$cssContent$matches);  
  7.   
  8. print_r($matches);  
valahogy így, bár ez a színkódokat is kiírja..
3

Nem rossz...

cszlak · 2013. Május. 12. (V), 18.11
Nem rossz, bár a színkódok valóban kár, hogy berakja.
Annyit változtattam rajta, hogy a 0-9 -et kivettem és a '-' helyett '_' lett.
így kicsit pontosabb, de még néhány színkód így is belekeveredik.
De ezen a vonalon már el lehet indulni.
7

Hogyan kell

cszlak · 2013. Május. 12. (V), 18.49
Hogyan kell bele rakni ebbe:
  1. $pattern='/(#[a-zA-Z0-9-]+)/';    
Hogy csak az 7 és 50 karakter hosszúságokat vegye figyelembe?
Így ki lehetne zárni belőle a színkódokat.

Közben megoldottam:
  1. $pattern='/(#[a-zA-Z_]{7,50}+)/';    
Így kevésbé írja ki a színkódokat, viszont ha rövidebb ID név van azt kihadja, de nekem így jó, mert rövid nevű nem lesz benne.

Ki lehet még egészíteni még ezzel:
  1. $eredmeny =   array_unique ($matches[0]);  
Így kiszűri és mindegyiket csak egyszer veszi.

Köszönöm a segítséget!
8

Csináld pontosan!

Pepita · 2013. Május. 12. (V), 20.53
Ha van egy konkrét feladatod, akkor pontosan azt programozd, ami a feladat!

Mi a majdnem biztos különbség az id és a szín között?
Az, hogy az id után van {. Persze nézni kell közöttük esetleges whitespace-t, egyéb karaktereket (child) is. Ha nincs {, de van ; és az érték 3 v 6 karakternyi hexa szám, akkor nem id.

Remélem így ki tudod pontosítani.
9

Akkor már inkább írjon egy

Joó Ádám · 2013. Május. 13. (H), 00.06
Akkor már inkább írjon egy tisztességes parsert, ami csak a kiválasztó pozícióban lévő elemeket figyeli.
10

Vagy használjon egy meglévőt,

tgr · 2013. Május. 13. (H), 12.14
Vagy használjon egy meglévőt, pl. PHP-CSS-Parser. Komplex CSS-re (kommentek, @ rule-ok stb.) parsert írni nem is olyan könnyű, a regex-alapú keresés meg egy csomó hamis pozitívot találhat (pl. SVG sprite fragment identifierek, content attribútum :before/:after-ben).
2

Ha az oldalon be van töltve

MadBence · 2013. Május. 12. (V), 17.58
Ha az oldalon be van töltve az adott stíluslap, akkor:
  1. var ids = Array.prototype.reduce.call(  
  2.   Array.prototype.filter.call(  
  3.     document.styleSheets,  
  4.     function(styleSheet) {  
  5.       return styleSheet.href && styleSheet.href.indexOf('css/index_style.css') !== -1;  
  6.     })[0].rules,  
  7.   function(ids, rule) {  
  8.     var match = rule.selectorText.match(/#[a-z0-9_-]+/gi);  
  9.     return match ? ids.concat(match.map(function(id) {  
  10.       return id.substr(1);  
  11.     })) : ids;  
  12.   }, []).reduce(function(arr, curr) {  
  13.     return arr.every(function(el) {  
  14.       return el !== curr;  
  15.     }) ? arr.concat([curr]) : arr;  
  16.   }, []);  
De minek kell ez neked?
4

Nincs betöltve a stíluslap

cszlak · 2013. Május. 12. (V), 18.17
Nincs betöltve a stílus lap.

Egy Tartalom kezelő felület meneger oldalára szánom.
Autómatizálni akarom, mert most manálisan működik. (kiválassza a css-fájl, majd beírja az ID nevét)
DE pontosan még nem tudom, hogy kellene megoldani, mindent. (csak ötletelgetek, és szedegetem a netről az ötleteket)

Az ID -t az fckeditor -nak akarom megadni.

Viszont amiben segített a te ötleted is, hogy a 'A-Z' -t is ki lehet venni, mert a Divnek nem adnak nagybetűs nevet.
5

Azért van kiszedve az A-Z,

MadBence · 2013. Május. 12. (V), 18.19
Azért van kiszedve az A-Z, mert ki van kapcsolva a kis-nagybetű érzékeny keresés (i kapcsoló). Teljesen szabályos, ha egy id nagybetűt is tartalmaz.
6

Bocsi

cszlak · 2013. Május. 12. (V), 18.23
Bocs , az a szabo.b.gabor kódjára gondoltam, hogy kivettem.
Ezekben a css kódokban viszont nem lesz nagybetű.